aboutsummaryrefslogtreecommitdiff
path: root/x11/xdg-desktop-portal-luminous
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2023-10-08 05:28:38 +0000
committerJan Beich <jbeich@FreeBSD.org>2023-10-08 17:13:11 +0000
commit9c96a7ef7ceddb289cb70dcd45d6700d61a54621 (patch)
tree80d9ca5dcf660d4d22ef1b80638911e80333a8b0 /x11/xdg-desktop-portal-luminous
parenta78610c737b73aaace15261a51d66463307d5c7a (diff)
downloadports-9c96a7ef7ceddb289cb70dcd45d6700d61a54621.tar.gz
ports-9c96a7ef7ceddb289cb70dcd45d6700d61a54621.zip
x11/xdg-desktop-portal-luminous: add new port
An alternative to xdg-desktop-portal-wlr for wlroots compositors. This project is a stand alone binary and does not depend on grim. libwayshot is used as the screencopy backend to enable screenshots. https://github.com/waycrate/xdg-desktop-portal-luminous
Diffstat (limited to 'x11/xdg-desktop-portal-luminous')
-rw-r--r--x11/xdg-desktop-portal-luminous/Makefile47
-rw-r--r--x11/xdg-desktop-portal-luminous/Makefile.crates523
-rw-r--r--x11/xdg-desktop-portal-luminous/distinfo1049
-rw-r--r--x11/xdg-desktop-portal-luminous/files/patch-drm-sys6727
-rw-r--r--x11/xdg-desktop-portal-luminous/files/patch-pipewire-i38653
-rw-r--r--x11/xdg-desktop-portal-luminous/files/patch-pipewire_init59
-rw-r--r--x11/xdg-desktop-portal-luminous/pkg-descr3
7 files changed, 8461 insertions, 0 deletions
diff --git a/x11/xdg-desktop-portal-luminous/Makefile b/x11/xdg-desktop-portal-luminous/Makefile
new file mode 100644
index 000000000000..74fbac64fb07
--- /dev/null
+++ b/x11/xdg-desktop-portal-luminous/Makefile
@@ -0,0 +1,47 @@
+PORTNAME= xdg-desktop-portal-luminous
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.1.1
+CATEGORIES= x11 wayland
+
+MAINTAINER= jbeich@FreeBSD.org
+COMMENT= xdg-desktop-portal backend for wlroots
+WWW= https://github.com/waycrate/xdg-desktop-portal-luminous
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BROKEN= https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273258
+BROKEN_FreeBSD_12= ld: error: undefined symbol: memfd_create
+
+LIB_DEPENDS= libpipewire-0.3.so:multimedia/pipewire \
+ libxkbcommon.so:x11/libxkbcommon
+RUN_DEPENDS= slurp:x11/slurp
+
+USES= cargo llvm meson pkgconfig
+USE_GITHUB= yes
+GH_ACCOUNT= waycrate
+MAKE_ENV= ${CARGO_ENV}
+CARGO_BUILD= no
+CARGO_INSTALL= no
+CARGO_TEST= no
+PLIST_FILES= lib/systemd/user/${PORTNAME}.service \
+ libexec/${PORTNAME} \
+ share/dbus-1/services/org.freedesktop.impl.portal.desktop.luminous.service \
+ share/xdg-desktop-portal/portals/luminous.portal
+
+post-patch:
+ @${REINPLACE_CMD} -e 's,"llvm-config,"${LLVM_CONFIG},' \
+ ${WRKSRC_crate_clang-sys}/build/common.rs \
+ ${WRKSRC_crate_clang-sys}/src/support.rs
+# Make each cargo subcommand very verbose
+# Add explicit <triple> subdir for --target from USES=cargo
+# Adjust for CARGO_TARGET_DIR outside of meson.global_source_root()
+ @${REINPLACE_CMD} -e "/cargo.*build/s/$$/ '--verbose', '--verbose',/" \
+ -e "/cp/s,'target','..' / & / '${CARGO_BUILD_TARGET}'," \
+ ${WRKSRC}/meson.build
+# XXX Drop after deskutils/xdg-desktop-portal >= 1.17.0 update
+# https://github.com/flatpak/xdg-desktop-portal/commit/939f0b0fcec6
+ @${ECHO_CMD} 'UseIn=wlroots;sway;Wayfire;river;phosh;Hyprland;' \
+ >>${WRKSRC}/misc/luminous.portal
+
+.include <bsd.port.mk>
diff --git a/x11/xdg-desktop-portal-luminous/Makefile.crates b/x11/xdg-desktop-portal-luminous/Makefile.crates
new file mode 100644
index 000000000000..72dcab54c1ef
--- /dev/null
+++ b/x11/xdg-desktop-portal-luminous/Makefile.crates
@@ -0,0 +1,523 @@
+CARGO_CRATES= ab_glyph-0.2.22 \
+ ab_glyph_rasterizer-0.1.8 \
+ accesskit-0.11.2 \
+ accesskit_consumer-0.15.2 \
+ accesskit_macos-0.9.0 \
+ accesskit_unix-0.5.2 \
+ accesskit_windows-0.14.3 \
+ accesskit_winit-0.14.4 \
+ addr2line-0.21.0 \
+ adler-1.0.2 \
+ ahash-0.8.3 \
+ aho-corasick-1.1.1 \
+ android-activity-0.4.3 \
+ android-properties-0.2.2 \
+ anyhow-1.0.75 \
+ arrayref-0.3.7 \
+ arrayvec-0.7.4 \
+ as-raw-xcb-connection-1.0.0 \
+ async-broadcast-0.5.1 \
+ async-channel-1.9.0 \
+ async-executor-1.5.4 \
+ async-fs-1.6.0 \
+ async-io-1.13.0 \
+ async-lock-2.8.0 \
+ async-process-1.8.1 \
+ async-recursion-1.0.5 \
+ async-signal-0.2.3 \
+ async-task-4.4.1 \
+ async-trait-0.1.73 \
+ atomic-polyfill-1.0.3 \
+ atomic-waker-1.1.2 \
+ atspi-0.10.1 \
+ atspi-macros-0.2.0 \
+ auto_enums-0.8.2 \
+ autocfg-1.1.0 \
+ backtrace-0.3.69 \
+ base64-0.21.4 \
+ bindgen-0.66.1 \
+ bindgen-0.68.1 \
+ bit_field-0.10.2 \
+ bitflags-1.3.2 \
+ bitflags-2.4.0 \
+ block-0.1.6 \
+ block-buffer-0.10.4 \
+ block-sys-0.1.0-beta.1 \
+ block2-0.2.0-alpha.6 \
+ blocking-1.4.1 \
+ bumpalo-3.14.0 \
+ by_address-1.1.0 \
+ bytemuck-1.14.0 \
+ bytemuck_derive-1.5.0 \
+ byteorder-1.5.0 \
+ bytes-1.5.0 \
+ calloop-0.10.6 \
+ calloop-0.11.0 \
+ cc-1.0.83 \
+ cexpr-0.6.0 \
+ cfg-expr-0.15.5 \
+ cfg-if-1.0.0 \
+ cfg_aliases-0.1.1 \
+ cgl-0.3.2 \
+ clang-sys-1.6.1 \
+ clipboard-win-3.1.1 \
+ clru-0.6.1 \
+ cocoa-0.24.1 \
+ cocoa-0.25.0 \
+ cocoa-foundation-0.1.2 \
+ codemap-0.1.3 \
+ codemap-diagnostic-0.1.2 \
+ color_quant-1.1.0 \
+ concurrent-queue-2.3.0 \
+ const-field-offset-0.1.3 \
+ const-field-offset-macro-0.1.3 \
+ convert_case-0.4.0 \
+ convert_case-0.6.0 \
+ cookie-factory-0.3.2 \
+ copypasta-0.8.2 \
+ core-foundation-0.9.3 \
+ core-foundation-sys-0.8.4 \
+ core-graphics-0.22.3 \
+ core-graphics-0.23.1 \
+ core-graphics-types-0.1.2 \
+ core-text-19.2.0 \
+ countme-3.0.1 \
+ cpp-0.5.9 \
+ cpp_build-0.5.9 \
+ cpp_common-0.5.9 \
+ cpp_macros-0.5.9 \
+ cpufeatures-0.2.9 \
+ crc32fast-1.3.2 \
+ critical-section-1.1.2 \
+ crossbeam-channel-0.5.8 \
+ crossbeam-deque-0.8.3 \
+ crossbeam-epoch-0.9.15 \
+ crossbeam-utils-0.8.16 \
+ crunchy-0.2.2 \
+ crypto-common-0.1.6 \
+ css-color-parser2-1.0.1 \
+ csscolorparser-0.6.2 \
+ ctor-0.2.5 \
+ data-url-0.2.0 \
+ derivative-2.2.0 \
+ derive_more-0.99.17 \
+ derive_utils-0.13.2 \
+ digest-0.10.7 \
+ dispatch-0.2.0 \
+ dlib-0.5.2 \
+ downcast-rs-1.2.0 \
+ drm-0.9.0 \
+ drm-ffi-0.5.0 \
+ drm-fourcc-2.2.0 \
+ drm-sys-0.4.0 \
+ dunce-1.0.4 \
+ dwrote-0.11.0 \
+ either-1.9.0 \
+ enumflags2-0.7.8 \
+ enumflags2_derive-0.7.8 \
+ equivalent-1.0.1 \
+ errno-0.3.4 \
+ errno-dragonfly-0.1.2 \
+ euclid-0.22.9 \
+ event-listener-2.5.3 \
+ event-listener-3.0.0 \
+ exr-1.71.0 \
+ fastrand-1.9.0 \
+ fastrand-2.0.1 \
+ fdeflate-0.3.0 \
+ femtovg-0.7.1 \
+ field-offset-0.3.6 \
+ filetime-0.2.22 \
+ flate2-1.0.27 \
+ float-cmp-0.9.0 \
+ flume-0.11.0 \
+ fnv-1.0.7 \
+ fontconfig-parser-0.5.3 \
+ fontdb-0.14.1 \
+ fontdue-0.7.3 \
+ foreign-types-0.3.2 \
+ foreign-types-0.5.0 \
+ foreign-types-macros-0.2.3 \
+ foreign-types-shared-0.1.1 \
+ foreign-types-shared-0.3.1 \
+ form_urlencoded-1.2.0 \
+ fsevent-sys-4.1.0 \
+ futures-0.3.28 \
+ futures-channel-0.3.28 \
+ futures-core-0.3.28 \
+ futures-executor-0.3.28 \
+ futures-io-0.3.28 \
+ futures-lite-1.13.0 \
+ futures-macro-0.3.28 \
+ futures-sink-0.3.28 \
+ futures-task-0.3.28 \
+ futures-util-0.3.28 \
+ gbm-0.12.0 \
+ gbm-sys-0.2.2 \
+ generational-arena-0.2.9 \
+ generic-array-0.14.7 \
+ gethostname-0.2.3 \
+ gethostname-0.3.0 \
+ getrandom-0.2.10 \
+ gif-0.12.0 \
+ gimli-0.28.0 \
+ gl_generator-0.14.0 \
+ glob-0.3.1 \
+ glow-0.12.3 \
+ glutin-0.30.10 \
+ glutin-winit-0.3.0 \
+ glutin_egl_sys-0.5.1 \
+ glutin_glx_sys-0.4.0 \
+ glutin_wgl_sys-0.4.0 \
+ half-2.2.1 \
+ hashbrown-0.12.3 \
+ hashbrown-0.13.2 \
+ hashbrown-0.14.1 \
+ heck-0.4.1 \
+ hermit-abi-0.3.3 \
+ hex-0.4.3 \
+ home-0.5.5 \
+ i-slint-backend-linuxkms-1.2.2 \
+ i-slint-backend-qt-1.2.2 \
+ i-slint-backend-selector-1.2.2 \
+ i-slint-backend-winit-1.2.2 \
+ i-slint-common-1.2.2 \
+ i-slint-compiler-1.2.2 \
+ i-slint-core-1.2.2 \
+ i-slint-core-macros-1.2.2 \
+ i-slint-renderer-femtovg-1.2.2 \
+ i-slint-renderer-skia-1.2.2 \
+ idna-0.4.0 \
+ image-0.24.7 \
+ imagesize-0.12.0 \
+ imgref-1.9.4 \
+ indexmap-2.0.2 \
+ inotify-0.9.6 \
+ inotify-sys-0.1.5 \
+ input-0.8.3 \
+ input-sys-1.17.0 \
+ instant-0.1.12 \
+ integer-sqrt-0.1.5 \
+ io-lifetimes-1.0.11 \
+ itertools-0.11.0 \
+ itoa-1.0.9 \
+ jni-sys-0.3.0 \
+ jobserver-0.1.26 \
+ jpeg-decoder-0.3.0 \
+ js-sys-0.3.64 \
+ khronos_api-3.1.0 \
+ kqueue-1.0.8 \
+ kqueue-sys-1.0.4 \
+ kurbo-0.9.5 \
+ lazy-bytes-cast-5.0.1 \
+ lazy_static-1.4.0 \
+ lazycell-1.3.0 \
+ lebe-0.5.2 \
+ libc-0.2.149 \
+ libloading-0.7.4 \
+ libloading-0.8.1 \
+ libm-0.2.8 \
+ libseat-0.2.1 \
+ libseat-sys-0.1.7 \
+ libspa-0.7.2 \
+ libspa-sys-0.7.2 \
+ libudev-sys-0.1.4 \
+ libwayshot-0.3.0 \
+ linked-hash-map-0.5.6 \
+ linked_hash_set-0.1.4 \
+ linux-raw-sys-0.3.8 \
+ linux-raw-sys-0.4.8 \
+ lock_api-0.4.10 \
+ log-0.4.20 \
+ lru-0.10.1 \
+ lyon_algorithms-1.0.3 \
+ lyon_extra-1.0.1 \
+ lyon_geom-1.0.4 \
+ lyon_path-1.0.4 \
+ malloc_buf-0.0.6 \
+ memchr-2.6.4 \
+ memmap2-0.5.10 \
+ memmap2-0.6.2 \
+ memmap2-0.7.1 \
+ memmap2-0.9.0 \
+ memoffset-0.6.5 \
+ memoffset-0.7.1 \
+ memoffset-0.9.0 \
+ metal-0.24.0 \
+ minimal-lexical-0.2.1 \
+ miniz_oxide-0.7.1 \
+ mio-0.8.8 \
+ ndk-0.7.0 \
+ ndk-context-0.1.1 \
+ ndk-sys-0.4.1+23.1.7779620 \
+ nix-0.24.3 \
+ nix-0.25.1 \
+ nix-0.26.4 \
+ nix-0.27.1 \
+ nom-7.1.3 \
+ notify-6.1.1 \
+ nu-ansi-term-0.46.0 \
+ num-integer-0.1.45 \
+ num-rational-0.4.1 \
+ num-traits-0.2.17 \
+ num_cpus-1.16.0 \
+ num_enum-0.5.11 \
+ num_enum-0.6.1 \
+ num_enum-0.7.0 \
+ num_enum_derive-0.5.11 \
+ num_enum_derive-0.6.1 \
+ num_enum_derive-0.7.0 \
+ objc-0.2.7 \
+ objc-foundation-0.1.1 \
+ objc-sys-0.2.0-beta.2 \
+ objc2-0.3.0-beta.3.patch-leaks.3 \
+ objc2-encode-2.0.0-pre.2 \
+ objc_exception-0.1.2 \
+ objc_id-0.1.1 \
+ object-0.32.1 \
+ once_cell-1.18.0 \
+ orbclient-0.3.46 \
+ ordered-stream-0.2.0 \
+ overload-0.1.1 \
+ owned_ttf_parser-0.19.0 \
+ parking-2.1.1 \
+ parking_lot-0.12.1 \
+ parking_lot_core-0.9.8 \
+ paste-1.0.14 \
+ peeking_take_while-0.1.2 \
+ percent-encoding-2.3.0 \
+ phf-0.11.2 \
+ phf_generator-0.11.2 \
+ phf_macros-0.11.2 \
+ phf_shared-0.11.2 \
+ pico-args-0.5.0 \
+ pin-project-1.1.3 \
+ pin-project-internal-1.1.3 \
+ pin-project-lite-0.2.13 \
+ pin-utils-0.1.0 \
+ pin-weak-1.1.0 \
+ piper-0.2.1 \
+ pipewire-0.7.2 \
+ pipewire-sys-0.7.2 \
+ pkg-config-0.3.27 \
+ png-0.17.10 \
+ polling-2.8.0 \
+ portable-atomic-1.4.3 \
+ ppv-lite86-0.2.17 \
+ prettyplease-0.2.15 \
+ proc-macro-crate-1.3.1 \
+ proc-macro2-1.0.68 \
+ qoi-0.4.1 \
+ qttypes-0.2.9 \
+ quick-xml-0.28.2 \
+ quick-xml-0.30.0 \
+ quote-1.0.33 \
+ rand-0.8.5 \
+ rand_chacha-0.3.1 \
+ rand_core-0.6.4 \
+ raw-window-handle-0.5.2 \
+ rayon-1.8.0 \
+ rayon-core-1.12.0 \
+ rctree-0.5.0 \
+ redox_syscall-0.3.5 \
+ regex-1.9.6 \
+ regex-automata-0.3.9 \
+ regex-syntax-0.7.5 \
+ resvg-0.34.1 \
+ rgb-0.8.36 \
+ ring-0.16.20 \
+ rowan-0.15.13 \
+ roxmltree-0.18.1 \
+ rustc-demangle-0.1.23 \
+ rustc-hash-1.1.0 \
+ rustc_version-0.4.0 \
+ rustix-0.37.24 \
+ rustix-0.38.17 \
+ rustls-0.21.7 \
+ rustls-webpki-0.101.6 \
+ rustversion-1.0.14 \
+ rustybuzz-0.7.0 \
+ ryu-1.0.15 \
+ same-file-1.0.6 \
+ scoped-tls-1.0.1 \
+ scoped-tls-hkt-0.1.4 \
+ scopeguard-1.2.0 \
+ sct-0.7.0 \
+ sctk-adwaita-0.5.4 \
+ semver-1.0.19 \
+ send_wrapper-0.6.0 \
+ serde-1.0.188 \
+ serde_derive-1.0.188 \
+ serde_json-1.0.107 \
+ serde_repr-0.1.16 \
+ serde_spanned-0.6.3 \
+ sha1-0.10.6 \
+ sharded-slab-0.1.7 \
+ shlex-1.2.0 \
+ signal-hook-registry-1.4.1 \
+ simd-adler32-0.3.7 \
+ simplecss-0.2.1 \
+ siphasher-0.3.11 \
+ skia-bindings-0.66.3 \
+ skia-safe-0.66.3 \
+ slab-0.4.9 \
+ slint-1.2.2 \
+ slint-build-1.2.2 \
+ slint-macros-1.2.2 \
+ slotmap-1.0.6 \
+ smallvec-1.11.1 \
+ smithay-client-toolkit-0.16.1 \
+ smithay-clipboard-0.6.6 \
+ smol_str-0.2.0 \
+ socket2-0.4.9 \
+ socket2-0.5.4 \
+ softbuffer-0.3.1 \
+ spin-0.5.2 \
+ spin-0.9.8 \
+ spin_on-0.1.1 \
+ stable_deref_trait-1.2.0 \
+ static_assertions-1.1.0 \
+ strict-num-0.1.1 \
+ strum-0.25.0 \
+ strum_macros-0.25.2 \
+ svgtypes-0.11.0 \
+ syn-1.0.109 \
+ syn-2.0.38 \
+ system-deps-6.1.2 \
+ tar-0.4.40 \
+ target-lexicon-0.12.11 \
+ tempfile-3.8.0 \
+ termcolor-1.3.0 \
+ text-size-1.1.1 \
+ thiserror-1.0.49 \
+ thiserror-impl-1.0.49 \
+ thread_local-1.1.7 \
+ tiff-0.9.0 \
+ tiny-skia-0.8.4 \
+ tiny-skia-0.10.0 \
+ tiny-skia-path-0.8.4 \
+ tiny-skia-path-0.10.0 \
+ tiny-xlib-0.2.2 \
+ tinyvec-1.6.0 \
+ tinyvec_macros-0.1.1 \
+ tokio-1.32.0 \
+ tokio-macros-2.1.0 \
+ toml-0.7.8 \
+ toml-0.8.2 \
+ toml_datetime-0.6.3 \
+ toml_edit-0.19.15 \
+ toml_edit-0.20.2 \
+ tracing-0.1.37 \
+ tracing-attributes-0.1.26 \
+ tracing-core-0.1.31 \
+ tracing-log-0.1.3 \
+ tracing-subscriber-0.3.17 \
+ ttf-parser-0.15.2 \
+ ttf-parser-0.18.1 \
+ ttf-parser-0.19.2 \
+ typenum-1.17.0 \
+ udev-0.7.0 \
+ uds_windows-1.0.2 \
+ unicode-bidi-0.3.13 \
+ unicode-bidi-mirroring-0.1.0 \
+ unicode-ccc-0.1.2 \
+ unicode-general-category-0.6.0 \
+ unicode-ident-1.0.12 \
+ unicode-linebreak-0.1.5 \
+ unicode-normalization-0.1.22 \
+ unicode-script-0.5.5 \
+ unicode-segmentation-1.10.1 \
+ unicode-vo-0.1.0 \
+ unicode-xid-0.2.4 \
+ untrusted-0.7.1 \
+ ureq-2.8.0 \
+ url-2.4.1 \
+ usvg-0.34.1 \
+ usvg-parser-0.34.0 \
+ usvg-text-layout-0.34.0 \
+ usvg-tree-0.34.0 \
+ valuable-0.1.0 \
+ vec_map-0.8.2 \
+ version-compare-0.1.1 \
+ version_check-0.9.4 \
+ vtable-0.1.11 \
+ vtable-macro-0.1.10 \
+ waker-fn-1.1.1 \
+ walkdir-2.4.0 \
+ wasi-0.11.0+wasi-snapshot-preview1 \
+ wasm-bindgen-0.2.87 \
+ wasm-bindgen-backend-0.2.87 \
+ wasm-bindgen-macro-0.2.87 \
+ wasm-bindgen-macro-support-0.2.87 \
+ wasm-bindgen-shared-0.2.87 \
+ wayland-backend-0.1.2 \
+ wayland-backend-0.3.2 \
+ wayland-client-0.29.5 \
+ wayland-client-0.30.2 \
+ wayland-client-0.31.1 \
+ wayland-commons-0.29.5 \
+ wayland-cursor-0.29.5 \
+ wayland-protocols-0.29.5 \
+ wayland-protocols-0.31.0 \
+ wayland-protocols-misc-0.2.0 \
+ wayland-protocols-wlr-0.2.0 \
+ wayland-scanner-0.29.5 \
+ wayland-scanner-0.30.1 \
+ wayland-scanner-0.31.0 \
+ wayland-sys-0.29.5 \
+ wayland-sys-0.30.1 \
+ wayland-sys-0.31.1 \
+ web-sys-0.3.64 \
+ webpki-roots-0.25.2 \
+ weezl-0.1.7 \
+ which-4.4.2 \
+ winapi-0.3.9 \
+ winapi-i686-pc-windows-gnu-0.4.0 \
+ winapi-util-0.1.6 \
+ winapi-wsapoll-0.1.1 \
+ winapi-x86_64-pc-windows-gnu-0.4.0 \
+ windows-0.48.0 \
+ windows-implement-0.48.0 \
+ windows-interface-0.48.0 \
+ windows-sys-0.45.0 \
+ windows-sys-0.48.0 \
+ windows-targets-0.42.2 \
+ windows-targets-0.48.5 \
+ windows_aarch64_gnullvm-0.42.2 \
+ windows_aarch64_gnullvm-0.48.5 \
+ windows_aarch64_msvc-0.42.2 \
+ windows_aarch64_msvc-0.48.5 \
+ windows_i686_gnu-0.42.2 \
+ windows_i686_gnu-0.48.5 \
+ windows_i686_msvc-0.42.2 \
+ windows_i686_msvc-0.48.5 \
+ windows_x86_64_gnu-0.42.2 \
+ windows_x86_64_gnu-0.48.5 \
+ windows_x86_64_gnullvm-0.42.2 \
+ windows_x86_64_gnullvm-0.48.5 \
+ windows_x86_64_msvc-0.42.2 \
+ windows_x86_64_msvc-0.48.5 \
+ winit-0.28.7 \
+ winnow-0.5.16 \
+ wio-0.2.2 \
+ x11-clipboard-0.7.1 \
+ x11-dl-2.21.0 \
+ x11rb-0.10.1 \
+ x11rb-0.12.0 \
+ x11rb-protocol-0.10.0 \
+ x11rb-protocol-0.12.0 \
+ xattr-1.0.1 \
+ xcursor-0.3.4 \
+ xdg-home-1.0.0 \
+ xkbcommon-0.6.0 \
+ xkeysym-0.2.0 \
+ xml-rs-0.8.19 \
+ xmlparser-0.13.6 \
+ xmlwriter-0.1.0 \
+ zbus-3.14.1 \
+ zbus_macros-3.14.1 \
+ zbus_names-2.6.0 \
+ zune-inflate-0.2.54 \
+ zvariant-3.15.0 \
+ zvariant_derive-3.15.0 \
+ zvariant_utils-1.0.1
diff --git a/x11/xdg-desktop-portal-luminous/distinfo b/x11/xdg-desktop-portal-luminous/distinfo
new file mode 100644
index 000000000000..cd72d7bd8351
--- /dev/null
+++ b/x11/xdg-desktop-portal-luminous/distinfo
@@ -0,0 +1,1049 @@
+TIMESTAMP = 1696742918
+SHA256 (rust/crates/ab_glyph-0.2.22.crate) = b1061f3ff92c2f65800df1f12fc7b4ff44ee14783104187dd04dfee6f11b0fd2
+SIZE (rust/crates/ab_glyph-0.2.22.crate) = 18440
+SHA256 (rust/crates/ab_glyph_rasterizer-0.1.8.crate) = c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046
+SIZE (rust/crates/ab_glyph_rasterizer-0.1.8.crate) = 11010
+SHA256 (rust/crates/accesskit-0.11.2.crate) = 76eb1adf08c5bcaa8490b9851fd53cca27fa9880076f178ea9d29f05196728a8
+SIZE (rust/crates/accesskit-0.11.2.crate) = 27223
+SHA256 (rust/crates/accesskit_consumer-0.15.2.crate) = 04bb4d9e4772fe0d47df57d0d5dbe5d85dd05e2f37ae1ddb6b105e76be58fb00
+SIZE (rust/crates/accesskit_consumer-0.15.2.crate) = 24995
+SHA256 (rust/crates/accesskit_macos-0.9.0.crate) = 134d0acf6acb667c89d3332999b1a5df4edbc8d6113910f392ebb73f2b03bb56
+SIZE (rust/crates/accesskit_macos-0.9.0.crate) = 17382
+SHA256 (rust/crates/accesskit_unix-0.5.2.crate) = e084cb5168790c0c112626175412dc5ad127083441a8248ae49ddf6725519e83
+SIZE (rust/crates/accesskit_unix-0.5.2.crate) = 17111
+SHA256 (rust/crates/accesskit_windows-0.14.3.crate) = 9eac0a7f2d7cd7a93b938af401d3d8e8b7094217989a7c25c55a953023436e31
+SIZE (rust/crates/accesskit_windows-0.14.3.crate) = 39348
+SHA256 (rust/crates/accesskit_winit-0.14.4.crate) = 825d23acee1bd6d25cbaa3ca6ed6e73faf24122a774ec33d52c5c86c6ab423c0
+SIZE (rust/crates/accesskit_winit-0.14.4.crate) = 21280
+SHA256 (rust/crates/addr2line-0.21.0.crate) = 8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb
+SIZE (rust/crates/addr2line-0.21.0.crate) = 40807
+SHA256 (rust/crates/adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe
+SIZE (rust/crates/adler-1.0.2.crate) = 12778
+SHA256 (rust/crates/ahash-0.8.3.crate) = 2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f
+SIZE (rust/crates/ahash-0.8.3.crate) = 42416
+SHA256 (rust/crates/aho-corasick-1.1.1.crate) = ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab
+SIZE (rust/crates/aho-corasick-1.1.1.crate) = 182812
+SHA256 (rust/crates/android-activity-0.4.3.crate) = 64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0
+SIZE (rust/crates/android-activity-0.4.3.crate) = 238185
+SHA256 (rust/crates/android-properties-0.2.2.crate) = fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04
+SIZE (rust/crates/android-properties-0.2.2.crate) = 4563
+SHA256 (rust/crates/anyhow-1.0.75.crate) = a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6
+SIZE (rust/crates/anyhow-1.0.75.crate) = 43901
+SHA256 (rust/crates/arrayref-0.3.7.crate) = 6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545
+SIZE (rust/crates/arrayref-0.3.7.crate) = 9620
+SHA256 (rust/crates/arrayvec-0.7.4.crate) = 96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711
+SIZE (rust/crates/arrayvec-0.7.4.crate) = 29856
+SHA256 (rust/crates/as-raw-xcb-connection-1.0.0.crate) = 2d5f312b0a56c5cdf967c0aeb67f6289603354951683bc97ddc595ab974ba9aa
+SIZE (rust/crates/as-raw-xcb-connection-1.0.0.crate) = 2030
+SHA256 (rust/crates/async-broadcast-0.5.1.crate) = 7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b
+SIZE (rust/crates/async-broadcast-0.5.1.crate) = 20134
+SHA256 (rust/crates/async-channel-1.9.0.crate) = 81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35
+SIZE (rust/crates/async-channel-1.9.0.crate) = 13664
+SHA256 (rust/crates/async-executor-1.5.4.crate) = 2c1da3ae8dabd9c00f453a329dfe1fb28da3c0a72e2478cdcd93171740c20499
+SIZE (rust/crates/async-executor-1.5.4.crate) = 21325
+SHA256 (rust/crates/async-fs-1.6.0.crate) = 279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06
+SIZE (rust/crates/async-fs-1.6.0.crate) = 16506
+SHA256 (rust/crates/async-io-1.13.0.crate) = 0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af
+SIZE (rust/crates/async-io-1.13.0.crate) = 37191
+SHA256 (rust/crates/async-lock-2.8.0.crate) = 287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b
+SIZE (rust/crates/async-lock-2.8.0.crate) = 29944
+SHA256 (rust/crates/async-process-1.8.1.crate) = ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88
+SIZE (rust/crates/async-process-1.8.1.crate) = 22758
+SHA256 (rust/crates/async-recursion-1.0.5.crate) = 5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0
+SIZE (rust/crates/async-recursion-1.0.5.crate) = 11890
+SHA256 (rust/crates/async-signal-0.2.3.crate) = 1079d27511f6c038736279421774ef4ad4bdd2e300825f4a48c4cc463a57cedf
+SIZE (rust/crates/async-signal-0.2.3.crate) = 13063
+SHA256 (rust/crates/async-task-4.4.1.crate) = b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921
+SIZE (rust/crates/async-task-4.4.1.crate) = 36349
+SHA256 (rust/crates/async-trait-0.1.73.crate) = bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0
+SIZE (rust/crates/async-trait-0.1.73.crate) = 28654
+SHA256 (rust/crates/atomic-polyfill-1.0.3.crate) = 8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4
+SIZE (rust/crates/atomic-polyfill-1.0.3.crate) = 11581
+SHA256 (rust/crates/atomic-waker-1.1.2.crate) = 1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0
+SIZE (rust/crates/atomic-waker-1.1.2.crate) = 12422
+SHA256 (rust/crates/atspi-0.10.1.crate) = 674e7a3376837b2e7d12d34d58ac47073c491dc3bf6f71a7adaf687d4d817faa
+SIZE (rust/crates/atspi-0.10.1.crate) = 55562
+SHA256 (rust/crates/atspi-macros-0.2.0.crate) = 97fb4870a32c0eaa17e35bca0e6b16020635157121fb7d45593d242c295bc768
+SIZE (rust/crates/atspi-macros-0.2.0.crate) = 3306
+SHA256 (rust/crates/auto_enums-0.8.2.crate) = dd4ba50b181a898ce52142184e3a46641002b3b190bf5ef827eb3c578fad4b70
+SIZE (rust/crates/auto_enums-0.8.2.crate) = 50765
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/backtrace-0.3.69.crate) = 2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837
+SIZE (rust/crates/backtrace-0.3.69.crate) = 77299
+SHA256 (rust/crates/base64-0.21.4.crate) = 9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2
+SIZE (rust/crates/base64-0.21.4.crate) = 77029
+SHA256 (rust/crates/bindgen-0.66.1.crate) = f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7
+SIZE (rust/crates/bindgen-0.66.1.crate) = 218860
+SHA256 (rust/crates/bindgen-0.68.1.crate) = 726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078
+SIZE (rust/crates/bindgen-0.68.1.crate) = 218997
+SHA256 (rust/crates/bit_field-0.10.2.crate) = dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61
+SIZE (rust/crates/bit_field-0.10.2.crate) = 10568
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.4.0.crate) = b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635
+SIZE (rust/crates/bitflags-2.4.0.crate) = 36954
+SHA256 (rust/crates/block-0.1.6.crate) = 0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a
+SIZE (rust/crates/block-0.1.6.crate) = 4077
+SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
+SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
+SHA256 (rust/crates/block-sys-0.1.0-beta.1.crate) = 0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146
+SIZE (rust/crates/block-sys-0.1.0-beta.1.crate) = 9039
+SHA256 (rust/crates/block2-0.2.0-alpha.6.crate) = 8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42
+SIZE (rust/crates/block2-0.2.0-alpha.6.crate) = 10639
+SHA256 (rust/crates/blocking-1.4.1.crate) = 8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a
+SIZE (rust/crates/blocking-1.4.1.crate) = 17205
+SHA256 (rust/crates/bumpalo-3.14.0.crate) = 7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec
+SIZE (rust/crates/bumpalo-3.14.0.crate) = 82400
+SHA256 (rust/crates/by_address-1.1.0.crate) = bf8dba2868114ed769a1f2590fc9ae5eb331175b44313b6c9b922f8f7ca813d0
+SIZE (rust/crates/by_address-1.1.0.crate) = 8165
+SHA256 (rust/crates/bytemuck-1.14.0.crate) = 374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6
+SIZE (rust/crates/bytemuck-1.14.0.crate) = 44933
+SHA256 (rust/crates/bytemuck_derive-1.5.0.crate) = 965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1
+SIZE (rust/crates/bytemuck_derive-1.5.0.crate) = 17323
+SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
+SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
+SHA256 (rust/crates/bytes-1.5.0.crate) = a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223
+SIZE (rust/crates/bytes-1.5.0.crate) = 58909
+SHA256 (rust/crates/calloop-0.10.6.crate) = 52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8
+SIZE (rust/crates/calloop-0.10.6.crate) = 53711
+SHA256 (rust/crates/calloop-0.11.0.crate) = dea4bfce4c7fbd71e5bb8a7063b6cc7eed48c6d29ee9a08332a59e5d9d93e5c4
+SIZE (rust/crates/calloop-0.11.0.crate) = 60134
+SHA256 (rust/crates/cc-1.0.83.crate) = f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0
+SIZE (rust/crates/cc-1.0.83.crate) = 68343
+SHA256 (rust/crates/cexpr-0.6.0.crate) = 6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766
+SIZE (rust/crates/cexpr-0.6.0.crate) = 17966
+SHA256 (rust/crates/cfg-expr-0.15.5.crate) = 03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3
+SIZE (rust/crates/cfg-expr-0.15.5.crate) = 41639
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/cfg_aliases-0.1.1.crate) = fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e
+SIZE (rust/crates/cfg_aliases-0.1.1.crate) = 6009
+SHA256 (rust/crates/cgl-0.3.2.crate) = 0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff
+SIZE (rust/crates/cgl-0.3.2.crate) = 7557
+SHA256 (rust/crates/clang-sys-1.6.1.crate) = c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f
+SIZE (rust/crates/clang-sys-1.6.1.crate) = 41346
+SHA256 (rust/crates/clipboard-win-3.1.1.crate) = 9fdf5e01086b6be750428ba4a40619f847eb2e95756eee84b18e06e5f0b50342
+SIZE (rust/crates/clipboard-win-3.1.1.crate) = 11964
+SHA256 (rust/crates/clru-0.6.1.crate) = b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807
+SIZE (rust/crates/clru-0.6.1.crate) = 16507
+SHA256 (rust/crates/cocoa-0.24.1.crate) = f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a
+SIZE (rust/crates/cocoa-0.24.1.crate) = 40445
+SHA256 (rust/crates/cocoa-0.25.0.crate) = f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c
+SIZE (rust/crates/cocoa-0.25.0.crate) = 42163
+SHA256 (rust/crates/cocoa-foundation-0.1.2.crate) = 8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7
+SIZE (rust/crates/cocoa-foundation-0.1.2.crate) = 15028
+SHA256 (rust/crates/codemap-0.1.3.crate) = b9e769b5c8c8283982a987c6e948e540254f1058d5a74b8794914d4ef5fc2a24
+SIZE (rust/crates/codemap-0.1.3.crate) = 9483
+SHA256 (rust/crates/codemap-diagnostic-0.1.2.crate) = cc20770be05b566a963bf91505e60412c4a2d016d1ef95c5512823bb085a8122
+SIZE (rust/crates/codemap-diagnostic-0.1.2.crate) = 21541
+SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b
+SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
+SHA256 (rust/crates/concurrent-queue-2.3.0.crate) = f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400
+SIZE (rust/crates/concurrent-queue-2.3.0.crate) = 20189
+SHA256 (rust/crates/const-field-offset-0.1.3.crate) = 6304465f16f463cddc572b737c3df93576edd3a6b53f057bd8beeb29f4ef8dfd
+SIZE (rust/crates/const-field-offset-0.1.3.crate) = 8163
+SHA256 (rust/crates/const-field-offset-macro-0.1.3.crate) = 57aaaad9185d3bcb3afe63549d8ba60b2fb0ea8dc2da83f62dd56805edf56fd1
+SIZE (rust/crates/const-field-offset-macro-0.1.3.crate) = 4528
+SHA256 (rust/crates/convert_case-0.4.0.crate) = 6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e
+SIZE (rust/crates/convert_case-0.4.0.crate) = 8098
+SHA256 (rust/crates/convert_case-0.6.0.crate) = ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca
+SIZE (rust/crates/convert_case-0.6.0.crate) = 18675
+SHA256 (rust/crates/cookie-factory-0.3.2.crate) = 396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b
+SIZE (rust/crates/cookie-factory-0.3.2.crate) = 14325
+SHA256 (rust/crates/copypasta-0.8.2.crate) = 133fc8675ee3a4ec9aa513584deda9aa0faeda3586b87f7f0f2ba082c66fb172
+SIZE (rust/crates/copypasta-0.8.2.crate) = 13030
+SHA256 (rust/crates/core-foundation-0.9.3.crate) = 194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146
+SIZE (rust/crates/core-foundation-0.9.3.crate) = 27059
+SHA256 (rust/crates/core-foundation-sys-0.8.4.crate) = e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa
+SIZE (rust/crates/core-foundation-sys-0.8.4.crate) = 17725
+SHA256 (rust/crates/core-graphics-0.22.3.crate) = 2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb
+SIZE (rust/crates/core-graphics-0.22.3.crate) = 29514
+SHA256 (rust/crates/core-graphics-0.23.1.crate) = 970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212
+SIZE (rust/crates/core-graphics-0.23.1.crate) = 30714
+SHA256 (rust/crates/core-graphics-types-0.1.2.crate) = 2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33
+SIZE (rust/crates/core-graphics-types-0.1.2.crate) = 2641
+SHA256 (rust/crates/core-text-19.2.0.crate) = 99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25
+SIZE (rust/crates/core-text-19.2.0.crate) = 18446
+SHA256 (rust/crates/countme-3.0.1.crate) = 7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636
+SIZE (rust/crates/countme-3.0.1.crate) = 10784
+SHA256 (rust/crates/cpp-0.5.9.crate) = bfa65869ef853e45c60e9828aa08cdd1398cb6e13f3911d9cb2a079b144fcd64
+SIZE (rust/crates/cpp-0.5.9.crate) = 6494
+SHA256 (rust/crates/cpp_build-0.5.9.crate) = 0e361fae2caf9758164b24da3eedd7f7d7451be30d90d8e7b5d2be29a2f0cf5b
+SIZE (rust/crates/cpp_build-0.5.9.crate) = 15713
+SHA256 (rust/crates/cpp_common-0.5.9.crate) = 3e1a2532e4ed4ea13031c13bc7bc0dbca4aae32df48e9d77f0d1e743179f2ea1
+SIZE (rust/crates/cpp_common-0.5.9.crate) = 4725
+SHA256 (rust/crates/cpp_macros-0.5.9.crate) = 47ec9cc90633446f779ef481a9ce5a0077107dd5b87016440448d908625a83fd
+SIZE (rust/crates/cpp_macros-0.5.9.crate) = 7103
+SHA256 (rust/crates/cpufeatures-0.2.9.crate) = a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1
+SIZE (rust/crates/cpufeatures-0.2.9.crate) = 11895
+SHA256 (rust/crates/crc32fast-1.3.2.crate) = b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d
+SIZE (rust/crates/crc32fast-1.3.2.crate) = 38661
+SHA256 (rust/crates/critical-section-1.1.2.crate) = 7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216
+SIZE (rust/crates/critical-section-1.1.2.crate) = 18337
+SHA256 (rust/crates/crossbeam-channel-0.5.8.crate) = a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200
+SIZE (rust/crates/crossbeam-channel-0.5.8.crate) = 90455
+SHA256 (rust/crates/crossbeam-deque-0.8.3.crate) = ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef
+SIZE (rust/crates/crossbeam-deque-0.8.3.crate) = 21746
+SHA256 (rust/crates/crossbeam-epoch-0.9.15.crate) = ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7
+SIZE (rust/crates/crossbeam-epoch-0.9.15.crate) = 48553
+SHA256 (rust/crates/crossbeam-utils-0.8.16.crate) = 5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294
+SIZE (rust/crates/crossbeam-utils-0.8.16.crate) = 42508
+SHA256 (rust/crates/crunchy-0.2.2.crate) = 7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7
+SIZE (rust/crates/crunchy-0.2.2.crate) = 2995
+SHA256 (rust/crates/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3
+SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
+SHA256 (rust/crates/css-color-parser2-1.0.1.crate) = cf8ed1639f4b56ec6f31d007ff66ce4a13099dce5a9995d48368a30d62bf04bd
+SIZE (rust/crates/css-color-parser2-1.0.1.crate) = 8371
+SHA256 (rust/crates/csscolorparser-0.6.2.crate) = eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf
+SIZE (rust/crates/csscolorparser-0.6.2.crate) = 16859
+SHA256 (rust/crates/ctor-0.2.5.crate) = 37e366bff8cd32dd8754b0991fb66b279dc48f598c3a18914852a6673deef583
+SIZE (rust/crates/ctor-0.2.5.crate) = 11014
+SHA256 (rust/crates/data-url-0.2.0.crate) = 8d7439c3735f405729d52c3fbbe4de140eaf938a1fe47d227c27f8254d4302a5
+SIZE (rust/crates/data-url-0.2.0.crate) = 20553
+SHA256 (rust/crates/derivative-2.2.0.crate) = fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b
+SIZE (rust/crates/derivative-2.2.0.crate) = 48076
+SHA256 (rust/crates/derive_more-0.99.17.crate) = 4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321
+SIZE (rust/crates/derive_more-0.99.17.crate) = 55771
+SHA256 (rust/crates/derive_utils-0.13.2.crate) = 9abcad25e9720609ccb3dcdb795d845e37d8ce34183330a9f48b03a1a71c8e21
+SIZE (rust/crates/derive_utils-0.13.2.crate) = 13714
+SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
+SIZE (rust/crates/digest-0.10.7.crate) = 19557
+SHA256 (rust/crates/dispatch-0.2.0.crate) = bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b
+SIZE (rust/crates/dispatch-0.2.0.crate) = 10229
+SHA256 (rust/crates/dlib-0.5.2.crate) = 330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412
+SIZE (rust/crates/dlib-0.5.2.crate) = 5806
+SHA256 (rust/crates/downcast-rs-1.2.0.crate) = 9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650
+SIZE (rust/crates/downcast-rs-1.2.0.crate) = 11670
+SHA256 (rust/crates/drm-0.9.0.crate) = edf9159ef4bcecd0c5e4cbeb573b8d0037493403d542780dba5d840bbf9df56f
+SIZE (rust/crates/drm-0.9.0.crate) = 46379
+SHA256 (rust/crates/drm-ffi-0.5.0.crate) = 1352481b7b90e27a8a1bf8ef6b33cf18b98dba7c410e75c24bb3eef2f0d8d525
+SIZE (rust/crates/drm-ffi-0.5.0.crate) = 7824
+SHA256 (rust/crates/drm-fourcc-2.2.0.crate) = 0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4
+SIZE (rust/crates/drm-fourcc-2.2.0.crate) = 12192
+SHA256 (rust/crates/drm-sys-0.4.0.crate) = 1369f1679d6b706d234c4c1e0613c415c2c74b598a09ad28080ba2474b72e42d
+SIZE (rust/crates/drm-sys-0.4.0.crate) = 53943
+SHA256 (rust/crates/dunce-1.0.4.crate) = 56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b
+SIZE (rust/crates/dunce-1.0.4.crate) = 8034
+SHA256 (rust/crates/dwrote-0.11.0.crate) = 439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b
+SIZE (rust/crates/dwrote-0.11.0.crate) = 21715
+SHA256 (rust/crates/either-1.9.0.crate) = a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07
+SIZE (rust/crates/either-1.9.0.crate) = 16660
+SHA256 (rust/crates/enumflags2-0.7.8.crate) = 5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939
+SIZE (rust/crates/enumflags2-0.7.8.crate) = 15374
+SHA256 (rust/crates/enumflags2_derive-0.7.8.crate) = f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246
+SIZE (rust/crates/enumflags2_derive-0.7.8.crate) = 7901
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.4.crate) = add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480
+SIZE (rust/crates/errno-0.3.4.crate) = 10589
+SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf
+SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
+SHA256 (rust/crates/euclid-0.22.9.crate) = 87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787
+SIZE (rust/crates/euclid-0.22.9.crate) = 76671
+SHA256 (rust/crates/event-listener-2.5.3.crate) = 0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0
+SIZE (rust/crates/event-listener-2.5.3.crate) = 15392
+SHA256 (rust/crates/event-listener-3.0.0.crate) = 29e56284f00d94c1bc7fd3c77027b4623c88c1f53d8d2394c6199f2921dea325
+SIZE (rust/crates/event-listener-3.0.0.crate) = 37110
+SHA256 (rust/crates/exr-1.71.0.crate) = 832a761f35ab3e6664babfbdc6cef35a4860e816ec3916dcfd0882954e98a8a8
+SIZE (rust/crates/exr-1.71.0.crate) = 244198
+SHA256 (rust/crates/fastrand-1.9.0.crate) = e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be
+SIZE (rust/crates/fastrand-1.9.0.crate) = 11910
+SHA256 (rust/crates/fastrand-2.0.1.crate) = 25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5
+SIZE (rust/crates/fastrand-2.0.1.crate) = 14664
+SHA256 (rust/crates/fdeflate-0.3.0.crate) = d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10
+SIZE (rust/crates/fdeflate-0.3.0.crate) = 21790
+SHA256 (rust/crates/femtovg-0.7.1.crate) = 5a3a2d0ff0df09856a5c1c89cc83863a1f0f994c55452186621bb57a01f270b3
+SIZE (rust/crates/femtovg-0.7.1.crate) = 81739
+SHA256 (rust/crates/field-offset-0.3.6.crate) = 38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f
+SIZE (rust/crates/field-offset-0.3.6.crate) = 10032
+SHA256 (rust/crates/filetime-0.2.22.crate) = d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0
+SIZE (rust/crates/filetime-0.2.22.crate) = 15029
+SHA256 (rust/crates/flate2-1.0.27.crate) = c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010
+SIZE (rust/crates/flate2-1.0.27.crate) = 73460
+SHA256 (rust/crates/float-cmp-0.9.0.crate) = 98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4
+SIZE (rust/crates/float-cmp-0.9.0.crate) = 10102
+SHA256 (rust/crates/flume-0.11.0.crate) = 55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181
+SIZE (rust/crates/flume-0.11.0.crate) = 67502
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/fontconfig-parser-0.5.3.crate) = 674e258f4b5d2dcd63888c01c68413c51f565e8af99d2f7701c7b81d79ef41c4
+SIZE (rust/crates/fontconfig-parser-0.5.3.crate) = 38070
+SHA256 (rust/crates/fontdb-0.14.1.crate) = af8d8cbea8f21307d7e84bca254772981296f058a1d36b461bf4d83a7499fc9e
+SIZE (rust/crates/fontdb-0.14.1.crate) = 107231
+SHA256 (rust/crates/fontdue-0.7.3.crate) = 0793f5137567643cf65ea42043a538804ff0fbf288649e2141442b602d81f9bc
+SIZE (rust/crates/fontdue-0.7.3.crate) = 139614
+SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (rust/crates/foreign-types-0.5.0.crate) = d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965
+SIZE (rust/crates/foreign-types-0.5.0.crate) = 7824
+SHA256 (rust/crates/foreign-types-macros-0.2.3.crate) = 1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742
+SIZE (rust/crates/foreign-types-macros-0.2.3.crate) = 7635
+SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (rust/crates/foreign-types-shared-0.3.1.crate) = aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b
+SIZE (rust/crates/foreign-types-shared-0.3.1.crate) = 6006
+SHA256 (rust/crates/form_urlencoded-1.2.0.crate) = a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652
+SIZE (rust/crates/form_urlencoded-1.2.0.crate) = 8923
+SHA256 (rust/crates/fsevent-sys-4.1.0.crate) = 76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2
+SIZE (rust/crates/fsevent-sys-4.1.0.crate) = 4620
+SHA256 (rust/crates/futures-0.3.28.crate) = 23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40
+SIZE (rust/crates/futures-0.3.28.crate) = 53229
+SHA256 (rust/crates/futures-channel-0.3.28.crate) = 955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2
+SIZE (rust/crates/futures-channel-0.3.28.crate) = 32281
+SHA256 (rust/crates/futures-core-0.3.28.crate) = 4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c
+SIZE (rust/crates/futures-core-0.3.28.crate) = 14780
+SHA256 (rust/crates/futures-executor-0.3.28.crate) = ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0
+SIZE (rust/crates/futures-executor-0.3.28.crate) = 17743
+SHA256 (rust/crates/futures-io-0.3.28.crate) = 4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964
+SIZE (rust/crates/futures-io-0.3.28.crate) = 8910
+SHA256 (rust/crates/futures-lite-1.13.0.crate) = 49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce
+SIZE (rust/crates/futures-lite-1.13.0.crate) = 37058
+SHA256 (rust/crates/futures-macro-0.3.28.crate) = 89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72
+SIZE (rust/crates/futures-macro-0.3.28.crate) = 11272
+SHA256 (rust/crates/futures-sink-0.3.28.crate) = f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e
+SIZE (rust/crates/futures-sink-0.3.28.crate) = 7852
+SHA256 (rust/crates/futures-task-0.3.28.crate) = 76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65
+SIZE (rust/crates/futures-task-0.3.28.crate) = 11848
+SHA256 (rust/crates/futures-util-0.3.28.crate) = 26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533
+SIZE (rust/crates/futures-util-0.3.28.crate) = 158510
+SHA256 (rust/crates/gbm-0.12.0.crate) = f2ec389cda876966cf824111bf6e533fb934c711d473498279964a990853b3c6
+SIZE (rust/crates/gbm-0.12.0.crate) = 11856
+SHA256 (rust/crates/gbm-sys-0.2.2.crate) = b63eba9b9b7a231514482deb08759301c9f9f049ac6869403f381834ebfeaf67
+SIZE (rust/crates/gbm-sys-0.2.2.crate) = 9268
+SHA256 (rust/crates/generational-arena-0.2.9.crate) = 877e94aff08e743b651baaea359664321055749b398adff8740a7399af7796e7
+SIZE (rust/crates/generational-arena-0.2.9.crate) = 21409
+SHA256 (rust/crates/generic-array-0.14.7.crate) = 85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a
+SIZE (rust/crates/generic-array-0.14.7.crate) = 15950
+SHA256 (rust/crates/gethostname-0.2.3.crate) = c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e
+SIZE (rust/crates/gethostname-0.2.3.crate) = 8174
+SHA256 (rust/crates/gethostname-0.3.0.crate) = bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177
+SIZE (rust/crates/gethostname-0.3.0.crate) = 8440
+SHA256 (rust/crates/getrandom-0.2.10.crate) = be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427
+SIZE (rust/crates/getrandom-0.2.10.crate) = 34955
+SHA256 (rust/crates/gif-0.12.0.crate) = 80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045
+SIZE (rust/crates/gif-0.12.0.crate) = 634734
+SHA256 (rust/crates/gimli-0.28.0.crate) = 6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0
+SIZE (rust/crates/gimli-0.28.0.crate) = 269277
+SHA256 (rust/crates/gl_generator-0.14.0.crate) = 1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d
+SIZE (rust/crates/gl_generator-0.14.0.crate) = 22330
+SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b
+SIZE (rust/crates/glob-0.3.1.crate) = 18880
+SHA256 (rust/crates/glow-0.12.3.crate) = ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728
+SIZE (rust/crates/glow-0.12.3.crate) = 149996
+SHA256 (rust/crates/glutin-0.30.10.crate) = 8fc93b03242719b8ad39fb26ed2b01737144ce7bd4bfc7adadcef806596760fe
+SIZE (rust/crates/glutin-0.30.10.crate) = 65694
+SHA256 (rust/crates/glutin-winit-0.3.0.crate) = 629a873fc04062830bfe8f97c03773bcd7b371e23bcc465d0a61448cd1588fa4
+SIZE (rust/crates/glutin-winit-0.3.0.crate) = 5408
+SHA256 (rust/crates/glutin_egl_sys-0.5.1.crate) = af784eb26c5a68ec85391268e074f0aa618c096eadb5d6330b0911cf34fe57c5
+SIZE (rust/crates/glutin_egl_sys-0.5.1.crate) = 6258
+SHA256 (rust/crates/glutin_glx_sys-0.4.0.crate) = 1b53cb5fe568964aa066a3ba91eac5ecbac869fb0842cd0dc9e412434f1a1494
+SIZE (rust/crates/glutin_glx_sys-0.4.0.crate) = 5905
+SHA256 (rust/crates/glutin_wgl_sys-0.4.0.crate) = ef89398e90033fc6bc65e9bd42fd29bbbfd483bda5b56dc5562f455550618165
+SIZE (rust/crates/glutin_wgl_sys-0.4.0.crate) = 5477
+SHA256 (rust/crates/half-2.2.1.crate) = 02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0
+SIZE (rust/crates/half-2.2.1.crate) = 47021
+SHA256 (rust/crates/hashbrown-0.12.3.crate) = 8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888
+SIZE (rust/crates/hashbrown-0.12.3.crate) = 102968
+SHA256 (rust/crates/hashbrown-0.13.2.crate) = 43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e
+SIZE (rust/crates/hashbrown-0.13.2.crate) = 105265
+SHA256 (rust/crates/hashbrown-0.14.1.crate) = 7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12
+SIZE (rust/crates/hashbrown-0.14.1.crate) = 127570
+SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
+SIZE (rust/crates/heck-0.4.1.crate) = 11567
+SHA256 (rust/crates/hermit-abi-0.3.3.crate) = d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7
+SIZE (rust/crates/hermit-abi-0.3.3.crate) = 14253
+SHA256 (rust/crates/hex-0.4.3.crate) = 7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70
+SIZE (rust/crates/hex-0.4.3.crate) = 13299
+SHA256 (rust/crates/home-0.5.5.crate) = 5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb
+SIZE (rust/crates/home-0.5.5.crate) = 8557
+SHA256 (rust/crates/i-slint-backend-linuxkms-1.2.2.crate) = 0e321d0f8d12509ec2ed5b5aba4996922606686ac3d86d70ba126cba1b4e4563
+SIZE (rust/crates/i-slint-backend-linuxkms-1.2.2.crate) = 32348
+SHA256 (rust/crates/i-slint-backend-qt-1.2.2.crate) = 0f1ce3687c329341842f79c31c95d7bcf49b6fda7fd19b09e0b5d7fb33b9d6b2
+SIZE (rust/crates/i-slint-backend-qt-1.2.2.crate) = 106103
+SHA256 (rust/crates/i-slint-backend-selector-1.2.2.crate) = e7382cc01e9c9ef607debe1e4af7e1c6af78720a258fd18d8e32761b8593c5db
+SIZE (rust/crates/i-slint-backend-selector-1.2.2.crate) = 20745
+SHA256 (rust/crates/i-slint-backend-winit-1.2.2.crate) = f8c0f3f01e2c678d24b81914a38e53d3b660a0ef13831acb59c71bd7c95ed0cb
+SIZE (rust/crates/i-slint-backend-winit-1.2.2.crate) = 48605
+SHA256 (rust/crates/i-slint-common-1.2.2.crate) = e7daf484e68bf27e06b7501767c6e66063c0f85948e57a6de679b53d2d9d2044
+SIZE (rust/crates/i-slint-common-1.2.2.crate) = 411078
+SHA256 (rust/crates/i-slint-compiler-1.2.2.crate) = 8b99172cc43ca17a78e96e3f8f13699d9fc1c00474d2d87bc57c0f7e816c4a48
+SIZE (rust/crates/i-slint-compiler-1.2.2.crate) = 357190
+SHA256 (rust/crates/i-slint-core-1.2.2.crate) = b62e590bb3d6009447a52760e9343c25a3bf7a8a7b0ad7ab5a77c5324fcaa957
+SIZE (rust/crates/i-slint-core-1.2.2.crate) = 223076
+SHA256 (rust/crates/i-slint-core-macros-1.2.2.crate) = 62a416f1e9fc42c2bf1f171e5be38a8155850fcd390fce300869bcc9d6c9c117
+SIZE (rust/crates/i-slint-core-macros-1.2.2.crate) = 20466
+SHA256 (rust/crates/i-slint-renderer-femtovg-1.2.2.crate) = 9e99a941fca00b96a7756d56e4bc5e2876283f34c693eabc73585c0b91ab84f0
+SIZE (rust/crates/i-slint-renderer-femtovg-1.2.2.crate) = 44920
+SHA256 (rust/crates/i-slint-renderer-skia-1.2.2.crate) = 9f617268cfee53e1fa3fcab8f6ab2775deacfce74057386c4ad39ef2647f8db6
+SIZE (rust/crates/i-slint-renderer-skia-1.2.2.crate) = 46324
+SHA256 (rust/crates/idna-0.4.0.crate) = 7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c
+SIZE (rust/crates/idna-0.4.0.crate) = 271429
+SHA256 (rust/crates/image-0.24.7.crate) = 6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711
+SIZE (rust/crates/image-0.24.7.crate) = 290618
+SHA256 (rust/crates/imagesize-0.12.0.crate) = 029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284
+SIZE (rust/crates/imagesize-0.12.0.crate) = 15747
+SHA256 (rust/crates/imgref-1.9.4.crate) = b2cf49df1085dcfb171460e4592597b84abe50d900fb83efb6e41b20fefd6c2c
+SIZE (rust/crates/imgref-1.9.4.crate) = 61486
+SHA256 (rust/crates/indexmap-2.0.2.crate) = 8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897
+SIZE (rust/crates/indexmap-2.0.2.crate) = 64274
+SHA256 (rust/crates/inotify-0.9.6.crate) = f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff
+SIZE (rust/crates/inotify-0.9.6.crate) = 22971
+SHA256 (rust/crates/inotify-sys-0.1.5.crate) = e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb
+SIZE (rust/crates/inotify-sys-0.1.5.crate) = 6965
+SHA256 (rust/crates/input-0.8.3.crate) = e6e74cd82cedcd66db78742a8337bdc48f188c4d2c12742cbc5cd85113f0b059
+SIZE (rust/crates/input-0.8.3.crate) = 40583
+SHA256 (rust/crates/input-sys-1.17.0.crate) = 05f6c2a17e8aba7217660e32863af87b0febad811d4b8620ef76b386603fddc2
+SIZE (rust/crates/input-sys-1.17.0.crate) = 1143715
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/integer-sqrt-0.1.5.crate) = 276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770
+SIZE (rust/crates/integer-sqrt-0.1.5.crate) = 2609
+SHA256 (rust/crates/io-lifetimes-1.0.11.crate) = eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2
+SIZE (rust/crates/io-lifetimes-1.0.11.crate) = 37346
+SHA256 (rust/crates/itertools-0.11.0.crate) = b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57
+SIZE (rust/crates/itertools-0.11.0.crate) = 125074
+SHA256 (rust/crates/itoa-1.0.9.crate) = af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38
+SIZE (rust/crates/itoa-1.0.9.crate) = 10492
+SHA256 (rust/crates/jni-sys-0.3.0.crate) = 8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130
+SIZE (rust/crates/jni-sys-0.3.0.crate) = 10232
+SHA256 (rust/crates/jobserver-0.1.26.crate) = 936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2
+SIZE (rust/crates/jobserver-0.1.26.crate) = 22645
+SHA256 (rust/crates/jpeg-decoder-0.3.0.crate) = bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e
+SIZE (rust/crates/jpeg-decoder-0.3.0.crate) = 742671
+SHA256 (rust/crates/js-sys-0.3.64.crate) = c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a
+SIZE (rust/crates/js-sys-0.3.64.crate) = 80313
+SHA256 (rust/crates/khronos_api-3.1.0.crate) = e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc
+SIZE (rust/crates/khronos_api-3.1.0.crate) = 599718
+SHA256 (rust/crates/kqueue-1.0.8.crate) = 7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c
+SIZE (rust/crates/kqueue-1.0.8.crate) = 12642
+SHA256 (rust/crates/kqueue-sys-1.0.4.crate) = ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b
+SIZE (rust/crates/kqueue-sys-1.0.4.crate) = 7160
+SHA256 (rust/crates/kurbo-0.9.5.crate) = bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b
+SIZE (rust/crates/kurbo-0.9.5.crate) = 108513
+SHA256 (rust/crates/lazy-bytes-cast-5.0.1.crate) = 10257499f089cd156ad82d0a9cd57d9501fa2c989068992a97eb3c27836f206b
+SIZE (rust/crates/lazy-bytes-cast-5.0.1.crate) = 4354
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/lazycell-1.3.0.crate) = 830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55
+SIZE (rust/crates/lazycell-1.3.0.crate) = 12502
+SHA256 (rust/crates/lebe-0.5.2.crate) = 03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8
+SIZE (rust/crates/lebe-0.5.2.crate) = 8422
+SHA256 (rust/crates/libc-0.2.149.crate) = a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b
+SIZE (rust/crates/libc-0.2.149.crate) = 715592
+SHA256 (rust/crates/libloading-0.7.4.crate) = b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f
+SIZE (rust/crates/libloading-0.7.4.crate) = 27580
+SHA256 (rust/crates/libloading-0.8.1.crate) = c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161
+SIZE (rust/crates/libloading-0.8.1.crate) = 27893
+SHA256 (rust/crates/libm-0.2.8.crate) = 4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058
+SIZE (rust/crates/libm-0.2.8.crate) = 113450
+SHA256 (rust/crates/libseat-0.2.1.crate) = 54a0adf8d8607a73a5b74cbe4132f57cb349e4bf860103cd089461bbcbc9907e
+SIZE (rust/crates/libseat-0.2.1.crate) = 6620
+SHA256 (rust/crates/libseat-sys-0.1.7.crate) = 3671cb5e03871f1d6bf0b3b5daa9275549e348fa6359e0f9adb910ca163d4c34
+SIZE (rust/crates/libseat-sys-0.1.7.crate) = 1955
+SHA256 (rust/crates/libspa-0.7.2.crate) = 0434617020ddca18b86067912970c55410ca654cdafd775480322f50b857a8c4
+SIZE (rust/crates/libspa-0.7.2.crate) = 54357
+SHA256 (rust/crates/libspa-sys-0.7.2.crate) = b3e70ca3f3e70f858ef363046d06178c427b4e0b63d210c95fd87d752679d345
+SIZE (rust/crates/libspa-sys-0.7.2.crate) = 10156
+SHA256 (rust/crates/libudev-sys-0.1.4.crate) = 3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324
+SIZE (rust/crates/libudev-sys-0.1.4.crate) = 6177
+SHA256 (rust/crates/libwayshot-0.3.0.crate) = a2efa01ecfd021b1e7db27f21f4e79b35b048081c9cae9d2f898eddc98444d69
+SIZE (rust/crates/libwayshot-0.3.0.crate) = 9830
+SHA256 (rust/crates/linked-hash-map-0.5.6.crate) = 0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f
+SIZE (rust/crates/linked-hash-map-0.5.6.crate) = 15049
+SHA256 (rust/crates/linked_hash_set-0.1.4.crate) = 47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588
+SIZE (rust/crates/linked_hash_set-0.1.4.crate) = 15328
+SHA256 (rust/crates/linux-raw-sys-0.3.8.crate) = ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519
+SIZE (rust/crates/linux-raw-sys-0.3.8.crate) = 1013776
+SHA256 (rust/crates/linux-raw-sys-0.4.8.crate) = 3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db
+SIZE (rust/crates/linux-raw-sys-0.4.8.crate) = 1407619
+SHA256 (rust/crates/lock_api-0.4.10.crate) = c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16
+SIZE (rust/crates/lock_api-0.4.10.crate) = 26713
+SHA256 (rust/crates/log-0.4.20.crate) = b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f
+SIZE (rust/crates/log-0.4.20.crate) = 38307
+SHA256 (rust/crates/lru-0.10.1.crate) = 718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670
+SIZE (rust/crates/lru-0.10.1.crate) = 14160
+SHA256 (rust/crates/lyon_algorithms-1.0.3.crate) = 00a0349cd8f0270781bb93a824b63df6178e3b4a27794e7be3ce3763f5a44d6e
+SIZE (rust/crates/lyon_algorithms-1.0.3.crate) = 32030
+SHA256 (rust/crates/lyon_extra-1.0.1.crate) = b9ce2ae38f2480094ec1f0d5df51a75581fa84f0e8f32a0edb1d264630c99f3b
+SIZE (rust/crates/lyon_extra-1.0.1.crate) = 10299
+SHA256 (rust/crates/lyon_geom-1.0.4.crate) = 74df1ff0a0147282eb10699537a03baa7d31972b58984a1d44ce0624043fe8ad
+SIZE (rust/crates/lyon_geom-1.0.4.crate) = 52457
+SHA256 (rust/crates/lyon_path-1.0.4.crate) = ca507745ba7ccbc76e5c44e7b63b1a29d2b0d6126f375806a5bbaf657c7d6c45
+SIZE (rust/crates/lyon_path-1.0.4.crate) = 35616
+SHA256 (rust/crates/malloc_buf-0.0.6.crate) = 62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb
+SIZE (rust/crates/malloc_buf-0.0.6.crate) = 1239
+SHA256 (rust/crates/memchr-2.6.4.crate) = f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167
+SIZE (rust/crates/memchr-2.6.4.crate) = 94439
+SHA256 (rust/crates/memmap2-0.5.10.crate) = 83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327
+SIZE (rust/crates/memmap2-0.5.10.crate) = 26847
+SHA256 (rust/crates/memmap2-0.6.2.crate) = 6d28bba84adfe6646737845bc5ebbfa2c08424eb1c37e94a1fd2a82adb56a872
+SIZE (rust/crates/memmap2-0.6.2.crate) = 27221
+SHA256 (rust/crates/memmap2-0.7.1.crate) = f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6
+SIZE (rust/crates/memmap2-0.7.1.crate) = 30741
+SHA256 (rust/crates/memmap2-0.9.0.crate) = deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375
+SIZE (rust/crates/memmap2-0.9.0.crate) = 31529
+SHA256 (rust/crates/memoffset-0.6.5.crate) = 5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce
+SIZE (rust/crates/memoffset-0.6.5.crate) = 7686
+SHA256 (rust/crates/memoffset-0.7.1.crate) = 5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4
+SIZE (rust/crates/memoffset-0.7.1.crate) = 8556
+SHA256 (rust/crates/memoffset-0.9.0.crate) = 5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c
+SIZE (rust/crates/memoffset-0.9.0.crate) = 9033
+SHA256 (rust/crates/metal-0.24.0.crate) = de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060
+SIZE (rust/crates/metal-0.24.0.crate) = 684270
+SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a
+SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841
+SHA256 (rust/crates/miniz_oxide-0.7.1.crate) = e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7
+SIZE (rust/crates/miniz_oxide-0.7.1.crate) = 55194
+SHA256 (rust/crates/mio-0.8.8.crate) = 927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2
+SIZE (rust/crates/mio-0.8.8.crate) = 94264
+SHA256 (rust/crates/ndk-0.7.0.crate) = 451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0
+SIZE (rust/crates/ndk-0.7.0.crate) = 54683
+SHA256 (rust/crates/ndk-context-0.1.1.crate) = 27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b
+SIZE (rust/crates/ndk-context-0.1.1.crate) = 2205
+SHA256 (rust/crates/ndk-sys-0.4.1+23.1.7779620.crate) = 3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3
+SIZE (rust/crates/ndk-sys-0.4.1+23.1.7779620.crate) = 291699
+SHA256 (rust/crates/nix-0.24.3.crate) = fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069
+SIZE (rust/crates/nix-0.24.3.crate) = 266843
+SHA256 (rust/crates/nix-0.25.1.crate) = f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4
+SIZE (rust/crates/nix-0.25.1.crate) = 272312
+SHA256 (rust/crates/nix-0.26.4.crate) = 598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b
+SIZE (rust/crates/nix-0.26.4.crate) = 279099
+SHA256 (rust/crates/nix-0.27.1.crate) = 2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053
+SIZE (rust/crates/nix-0.27.1.crate) = 286494
+SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
+SIZE (rust/crates/nom-7.1.3.crate) = 117570
+SHA256 (rust/crates/notify-6.1.1.crate) = 6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d
+SIZE (rust/crates/notify-6.1.1.crate) = 40117
+SHA256 (rust/crates/nu-ansi-term-0.46.0.crate) = 77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84
+SIZE (rust/crates/nu-ansi-term-0.46.0.crate) = 24311
+SHA256 (rust/crates/num-integer-0.1.45.crate) = 225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9
+SIZE (rust/crates/num-integer-0.1.45.crate) = 22529
+SHA256 (rust/crates/num-rational-0.4.1.crate) = 0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0
+SIZE (rust/crates/num-rational-0.4.1.crate) = 27889
+SHA256 (rust/crates/num-traits-0.2.17.crate) = 39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c
+SIZE (rust/crates/num-traits-0.2.17.crate) = 50190
+SHA256 (rust/crates/num_cpus-1.16.0.crate) = 4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43
+SIZE (rust/crates/num_cpus-1.16.0.crate) = 15713
+SHA256 (rust/crates/num_enum-0.5.11.crate) = 1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9
+SIZE (rust/crates/num_enum-0.5.11.crate) = 16772
+SHA256 (rust/crates/num_enum-0.6.1.crate) = 7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1
+SIZE (rust/crates/num_enum-0.6.1.crate) = 17911
+SHA256 (rust/crates/num_enum-0.7.0.crate) = 70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb
+SIZE (rust/crates/num_enum-0.7.0.crate) = 18578
+SHA256 (rust/crates/num_enum_derive-0.5.11.crate) = dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799
+SIZE (rust/crates/num_enum_derive-0.5.11.crate) = 15552
+SHA256 (rust/crates/num_enum_derive-0.6.1.crate) = 96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6
+SIZE (rust/crates/num_enum_derive-0.6.1.crate) = 15403
+SHA256 (rust/crates/num_enum_derive-0.7.0.crate) = 56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597
+SIZE (rust/crates/num_enum_derive-0.7.0.crate) = 17076
+SHA256 (rust/crates/objc-0.2.7.crate) = 915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1
+SIZE (rust/crates/objc-0.2.7.crate) = 22036
+SHA256 (rust/crates/objc-foundation-0.1.1.crate) = 1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9
+SIZE (rust/crates/objc-foundation-0.1.1.crate) = 9063
+SHA256 (rust/crates/objc-sys-0.2.0-beta.2.crate) = df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7
+SIZE (rust/crates/objc-sys-0.2.0-beta.2.crate) = 19364
+SHA256 (rust/crates/objc2-0.3.0-beta.3.patch-leaks.3.crate) = 7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468
+SIZE (rust/crates/objc2-0.3.0-beta.3.patch-leaks.3.crate) = 156792
+SHA256 (rust/crates/objc2-encode-2.0.0-pre.2.crate) = abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512
+SIZE (rust/crates/objc2-encode-2.0.0-pre.2.crate) = 20836
+SHA256 (rust/crates/objc_exception-0.1.2.crate) = ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4
+SIZE (rust/crates/objc_exception-0.1.2.crate) = 2251
+SHA256 (rust/crates/objc_id-0.1.1.crate) = c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b
+SIZE (rust/crates/objc_id-0.1.1.crate) = 3258
+SHA256 (rust/crates/object-0.32.1.crate) = 9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0
+SIZE (rust/crates/object-0.32.1.crate) = 275463
+SHA256 (rust/crates/once_cell-1.18.0.crate) = dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d
+SIZE (rust/crates/once_cell-1.18.0.crate) = 32969
+SHA256 (rust/crates/orbclient-0.3.46.crate) = 8378ac0dfbd4e7895f2d2c1f1345cab3836910baf3a300b000d04250f0c8428f
+SIZE (rust/crates/orbclient-0.3.46.crate) = 1324549
+SHA256 (rust/crates/ordered-stream-0.2.0.crate) = 9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50
+SIZE (rust/crates/ordered-stream-0.2.0.crate) = 19077
+SHA256 (rust/crates/overload-0.1.1.crate) = b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39
+SIZE (rust/crates/overload-0.1.1.crate) = 24439
+SHA256 (rust/crates/owned_ttf_parser-0.19.0.crate) = 706de7e2214113d63a8238d1910463cfce781129a6f263d13fdb09ff64355ba4
+SIZE (rust/crates/owned_ttf_parser-0.19.0.crate) = 150704
+SHA256 (rust/crates/parking-2.1.1.crate) = e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067
+SIZE (rust/crates/parking-2.1.1.crate) = 9583
+SHA256 (rust/crates/parking_lot-0.12.1.crate) = 3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f
+SIZE (rust/crates/parking_lot-0.12.1.crate) = 40967
+SHA256 (rust/crates/parking_lot_core-0.9.8.crate) = 93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447
+SIZE (rust/crates/parking_lot_core-0.9.8.crate) = 32383
+SHA256 (rust/crates/paste-1.0.14.crate) = de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c
+SIZE (rust/crates/paste-1.0.14.crate) = 18157
+SHA256 (rust/crates/peeking_take_while-0.1.2.crate) = 19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099
+SIZE (rust/crates/peeking_take_while-0.1.2.crate) = 6697
+SHA256 (rust/crates/percent-encoding-2.3.0.crate) = 9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94
+SIZE (rust/crates/percent-encoding-2.3.0.crate) = 10196
+SHA256 (rust/crates/phf-0.11.2.crate) = ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc
+SIZE (rust/crates/phf-0.11.2.crate) = 21569
+SHA256 (rust/crates/phf_generator-0.11.2.crate) = 48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0
+SIZE (rust/crates/phf_generator-0.11.2.crate) = 14190
+SHA256 (rust/crates/phf_macros-0.11.2.crate) = 3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b
+SIZE (rust/crates/phf_macros-0.11.2.crate) = 4748
+SHA256 (rust/crates/phf_shared-0.11.2.crate) = 90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b
+SIZE (rust/crates/phf_shared-0.11.2.crate) = 14284
+SHA256 (rust/crates/pico-args-0.5.0.crate) = 5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315
+SIZE (rust/crates/pico-args-0.5.0.crate) = 11545
+SHA256 (rust/crates/pin-project-1.1.3.crate) = fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422
+SIZE (rust/crates/pin-project-1.1.3.crate) = 57740
+SHA256 (rust/crates/pin-project-internal-1.1.3.crate) = 4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405
+SIZE (rust/crates/pin-project-internal-1.1.3.crate) = 27824
+SHA256 (rust/crates/pin-project-lite-0.2.13.crate) = 8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58
+SIZE (rust/crates/pin-project-lite-0.2.13.crate) = 29141
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/pin-weak-1.1.0.crate) = b330c9d1b92dfe68442ca20b009c717d5f0b1e3cf4965e62f704c3c6e95a1305
+SIZE (rust/crates/pin-weak-1.1.0.crate) = 4099
+SHA256 (rust/crates/piper-0.2.1.crate) = 668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4
+SIZE (rust/crates/piper-0.2.1.crate) = 15878
+SHA256 (rust/crates/pipewire-0.7.2.crate) = a2d009c8dd65e890b515a71950f7e4c801523b8894ff33863a40830bf762e9e9
+SIZE (rust/crates/pipewire-0.7.2.crate) = 46643
+SHA256 (rust/crates/pipewire-sys-0.7.2.crate) = 890c084e7b737246cb4799c86b71a0e4da536031ff7473dd639eba9f95039f64
+SIZE (rust/crates/pipewire-sys-0.7.2.crate) = 3009
+SHA256 (rust/crates/pkg-config-0.3.27.crate) = 26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964
+SIZE (rust/crates/pkg-config-0.3.27.crate) = 18838
+SHA256 (rust/crates/png-0.17.10.crate) = dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64
+SIZE (rust/crates/png-0.17.10.crate) = 89384
+SHA256 (rust/crates/polling-2.8.0.crate) = 4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce
+SIZE (rust/crates/polling-2.8.0.crate) = 43554
+SHA256 (rust/crates/portable-atomic-1.4.3.crate) = 31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b
+SIZE (rust/crates/portable-atomic-1.4.3.crate) = 126291
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/prettyplease-0.2.15.crate) = ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d
+SIZE (rust/crates/prettyplease-0.2.15.crate) = 57034
+SHA256 (rust/crates/proc-macro-crate-1.3.1.crate) = 7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919
+SIZE (rust/crates/proc-macro-crate-1.3.1.crate) = 9678
+SHA256 (rust/crates/proc-macro2-1.0.68.crate) = 5b1106fec09662ec6dd98ccac0f81cef56984d0b49f75c92d8cbad76e20c005c
+SIZE (rust/crates/proc-macro2-1.0.68.crate) = 43783
+SHA256 (rust/crates/qoi-0.4.1.crate) = 7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001
+SIZE (rust/crates/qoi-0.4.1.crate) = 71135
+SHA256 (rust/crates/qttypes-0.2.9.crate) = 116e96ef85a287acd172c5ed017ef56ee1d9e4f016558e8fc1625925f3f77468
+SIZE (rust/crates/qttypes-0.2.9.crate) = 26097
+SHA256 (rust/crates/quick-xml-0.28.2.crate) = 0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1
+SIZE (rust/crates/quick-xml-0.28.2.crate) = 156462
+SHA256 (rust/crates/quick-xml-0.30.0.crate) = eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956
+SIZE (rust/crates/quick-xml-0.30.0.crate) = 161923
+SHA256 (rust/crates/quote-1.0.33.crate) = 5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae
+SIZE (rust/crates/quote-1.0.33.crate) = 28090
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
+SHA256 (rust/crates/raw-window-handle-0.5.2.crate) = f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9
+SIZE (rust/crates/raw-window-handle-0.5.2.crate) = 17063
+SHA256 (rust/crates/rayon-1.8.0.crate) = 9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1
+SIZE (rust/crates/rayon-1.8.0.crate) = 170172
+SHA256 (rust/crates/rayon-core-1.12.0.crate) = 5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed
+SIZE (rust/crates/rayon-core-1.12.0.crate) = 70081
+SHA256 (rust/crates/rctree-0.5.0.crate) = 3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f
+SIZE (rust/crates/rctree-0.5.0.crate) = 8298
+SHA256 (rust/crates/redox_syscall-0.3.5.crate) = 567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29
+SIZE (rust/crates/redox_syscall-0.3.5.crate) = 23404
+SHA256 (rust/crates/regex-1.9.6.crate) = ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff
+SIZE (rust/crates/regex-1.9.6.crate) = 254981
+SHA256 (rust/crates/regex-automata-0.3.9.crate) = 59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9
+SIZE (rust/crates/regex-automata-0.3.9.crate) = 610489
+SHA256 (rust/crates/regex-syntax-0.7.5.crate) = dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da
+SIZE (rust/crates/regex-syntax-0.7.5.crate) = 343366
+SHA256 (rust/crates/resvg-0.34.1.crate) = b0e3d65cea36eefb28a020edb6e66341764e00cd4b426e0c1f0599b1adaa78f5
+SIZE (rust/crates/resvg-0.34.1.crate) = 86178
+SHA256 (rust/crates/rgb-0.8.36.crate) = 20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59
+SIZE (rust/crates/rgb-0.8.36.crate) = 16576
+SHA256 (rust/crates/ring-0.16.20.crate) = 3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc
+SIZE (rust/crates/ring-0.16.20.crate) = 5082615
+SHA256 (rust/crates/rowan-0.15.13.crate) = 906057e449592587bf6724f00155bf82a6752c868d78a8fb3aa41f4e6357cfe8
+SIZE (rust/crates/rowan-0.15.13.crate) = 39945
+SHA256 (rust/crates/roxmltree-0.18.1.crate) = 862340e351ce1b271a378ec53f304a5558f7db87f3769dc655a8f6ecbb68b302
+SIZE (rust/crates/roxmltree-0.18.1.crate) = 43040
+SHA256 (rust/crates/rustc-demangle-0.1.23.crate) = d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76
+SIZE (rust/crates/rustc-demangle-0.1.23.crate) = 28970
+SHA256 (rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2
+SIZE (rust/crates/rustc-hash-1.1.0.crate) = 9331
+SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
+SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
+SHA256 (rust/crates/rustix-0.37.24.crate) = 4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d
+SIZE (rust/crates/rustix-0.37.24.crate) = 323168
+SHA256 (rust/crates/rustix-0.38.17.crate) = f25469e9ae0f3d0047ca8b93fc56843f38e6774f0914a107ff8b41be8be8e0b7
+SIZE (rust/crates/rustix-0.38.17.crate) = 353766
+SHA256 (rust/crates/rustls-0.21.7.crate) = cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8
+SIZE (rust/crates/rustls-0.21.7.crate) = 283818
+SHA256 (rust/crates/rustls-webpki-0.101.6.crate) = 3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe
+SIZE (rust/crates/rustls-webpki-0.101.6.crate) = 168776
+SHA256 (rust/crates/rustversion-1.0.14.crate) = 7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4
+SIZE (rust/crates/rustversion-1.0.14.crate) = 17261
+SHA256 (rust/crates/rustybuzz-0.7.0.crate) = 162bdf42e261bee271b3957691018634488084ef577dddeb6420a9684cab2a6a
+SIZE (rust/crates/rustybuzz-0.7.0.crate) = 219739
+SHA256 (rust/crates/ryu-1.0.15.crate) = 1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741
+SIZE (rust/crates/ryu-1.0.15.crate) = 46906
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scoped-tls-1.0.1.crate) = e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294
+SIZE (rust/crates/scoped-tls-1.0.1.crate) = 8202
+SHA256 (rust/crates/scoped-tls-hkt-0.1.4.crate) = 3ddc765d3410d9f6c6ca071bf0b67f6b01e3ec4595dc3892f02677e75819dddc
+SIZE (rust/crates/scoped-tls-hkt-0.1.4.crate) = 11688
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/sct-0.7.0.crate) = d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4
+SIZE (rust/crates/sct-0.7.0.crate) = 27502
+SHA256 (rust/crates/sctk-adwaita-0.5.4.crate) = cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09
+SIZE (rust/crates/sctk-adwaita-0.5.4.crate) = 45888
+SHA256 (rust/crates/semver-1.0.19.crate) = ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0
+SIZE (rust/crates/semver-1.0.19.crate) = 30027
+SHA256 (rust/crates/send_wrapper-0.6.0.crate) = cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73
+SIZE (rust/crates/send_wrapper-0.6.0.crate) = 10519
+SHA256 (rust/crates/serde-1.0.188.crate) = cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e
+SIZE (rust/crates/serde-1.0.188.crate) = 76230
+SHA256 (rust/crates/serde_derive-1.0.188.crate) = 4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2
+SIZE (rust/crates/serde_derive-1.0.188.crate) = 55563
+SHA256 (rust/crates/serde_json-1.0.107.crate) = 6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65
+SIZE (rust/crates/serde_json-1.0.107.crate) = 146458
+SHA256 (rust/crates/serde_repr-0.1.16.crate) = 8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00
+SIZE (rust/crates/serde_repr-0.1.16.crate) = 9629
+SHA256 (rust/crates/serde_spanned-0.6.3.crate) = 96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186
+SIZE (rust/crates/serde_spanned-0.6.3.crate) = 7737
+SHA256 (rust/crates/sha1-0.10.6.crate) = e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba
+SIZE (rust/crates/sha1-0.10.6.crate) = 13517
+SHA256 (rust/crates/sharded-slab-0.1.7.crate) = f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6
+SIZE (rust/crates/sharded-slab-0.1.7.crate) = 58227
+SHA256 (rust/crates/shlex-1.2.0.crate) = a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380
+SIZE (rust/crates/shlex-1.2.0.crate) = 6584
+SHA256 (rust/crates/signal-hook-registry-1.4.1.crate) = d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1
+SIZE (rust/crates/signal-hook-registry-1.4.1.crate) = 17987
+SHA256 (rust/crates/simd-adler32-0.3.7.crate) = d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe
+SIZE (rust/crates/simd-adler32-0.3.7.crate) = 12086
+SHA256 (rust/crates/simplecss-0.2.1.crate) = a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d
+SIZE (rust/crates/simplecss-0.2.1.crate) = 19418
+SHA256 (rust/crates/siphasher-0.3.11.crate) = 38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d
+SIZE (rust/crates/siphasher-0.3.11.crate) = 10442
+SHA256 (rust/crates/skia-bindings-0.66.3.crate) = 2a42e3db408fbe7beafeadcaf5309c59eb99cc80979cab1b49e2a47539adf8ab
+SIZE (rust/crates/skia-bindings-0.66.3.crate) = 200492
+SHA256 (rust/crates/skia-safe-0.66.3.crate) = 6d03680a0ce867756947f2d5fa92078915342f81996c43b61847fed565068f75
+SIZE (rust/crates/skia-safe-0.66.3.crate) = 387214
+SHA256 (rust/crates/slab-0.4.9.crate) = 8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67
+SIZE (rust/crates/slab-0.4.9.crate) = 17108
+SHA256 (rust/crates/slint-1.2.2.crate) = c9a6f76430dde7dc57d374c37aa3103532813cc275a94b515b5907e91dd19334
+SIZE (rust/crates/slint-1.2.2.crate) = 187144
+SHA256 (rust/crates/slint-build-1.2.2.crate) = c6edc7309a89f14c685086544ea3dbd7668ccdeb03d774f06879f38237e55815
+SIZE (rust/crates/slint-build-1.2.2.crate) = 22475
+SHA256 (rust/crates/slint-macros-1.2.2.crate) = 33f96e5ea0574ac69b773b159d43124f7a329107cf60c11516e63d38c2d8c89c
+SIZE (rust/crates/slint-macros-1.2.2.crate) = 22766
+SHA256 (rust/crates/slotmap-1.0.6.crate) = e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342
+SIZE (rust/crates/slotmap-1.0.6.crate) = 58954
+SHA256 (rust/crates/smallvec-1.11.1.crate) = 942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a
+SIZE (rust/crates/smallvec-1.11.1.crate) = 34831
+SHA256 (rust/crates/smithay-client-toolkit-0.16.1.crate) = 870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9
+SIZE (rust/crates/smithay-client-toolkit-0.16.1.crate) = 131081
+SHA256 (rust/crates/smithay-clipboard-0.6.6.crate) = 0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8
+SIZE (rust/crates/smithay-clipboard-0.6.6.crate) = 16797
+SHA256 (rust/crates/smol_str-0.2.0.crate) = 74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c
+SIZE (rust/crates/smol_str-0.2.0.crate) = 13467
+SHA256 (rust/crates/socket2-0.4.9.crate) = 64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662
+SIZE (rust/crates/socket2-0.4.9.crate) = 45421
+SHA256 (rust/crates/socket2-0.5.4.crate) = 4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e
+SIZE (rust/crates/socket2-0.5.4.crate) = 54663
+SHA256 (rust/crates/softbuffer-0.3.1.crate) = 8bd56fe5e6c6f1881aad2bd37acaef4ac4a3689c970dfcbd87a36a6e60210ec8
+SIZE (rust/crates/softbuffer-0.3.1.crate) = 53655
+SHA256 (rust/crates/spin-0.5.2.crate) = 6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d
+SIZE (rust/crates/spin-0.5.2.crate) = 12004
+SHA256 (rust/crates/spin-0.9.8.crate) = 6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67
+SIZE (rust/crates/spin-0.9.8.crate) = 38958
+SHA256 (rust/crates/spin_on-0.1.1.crate) = 076e103ed41b9864aa838287efe5f4e3a7a0362dd00671ae62a212e5e4612da2
+SIZE (rust/crates/spin_on-0.1.1.crate) = 7495
+SHA256 (rust/crates/stable_deref_trait-1.2.0.crate) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3
+SIZE (rust/crates/stable_deref_trait-1.2.0.crate) = 8054
+SHA256 (rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
+SIZE (rust/crates/static_assertions-1.1.0.crate) = 18480
+SHA256 (rust/crates/strict-num-0.1.1.crate) = 6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731
+SIZE (rust/crates/strict-num-0.1.1.crate) = 5104
+SHA256 (rust/crates/strum-0.25.0.crate) = 290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125
+SIZE (rust/crates/strum-0.25.0.crate) = 5539
+SHA256 (rust/crates/strum_macros-0.25.2.crate) = ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059
+SIZE (rust/crates/strum_macros-0.25.2.crate) = 21964
+SHA256 (rust/crates/svgtypes-0.11.0.crate) = ed4b0611e7f3277f68c0fa18e385d9e2d26923691379690039548f867cef02a7
+SIZE (rust/crates/svgtypes-0.11.0.crate) = 35681
+SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
+SIZE (rust/crates/syn-1.0.109.crate) = 237611
+SHA256 (rust/crates/syn-2.0.38.crate) = e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b
+SIZE (rust/crates/syn-2.0.38.crate) = 243284
+SHA256 (rust/crates/system-deps-6.1.2.crate) = 94af52f9402f94aac4948a2518b43359be8d9ce6cd9efc1c4de3b2f7b7e897d6
+SIZE (rust/crates/system-deps-6.1.2.crate) = 24167
+SHA256 (rust/crates/tar-0.4.40.crate) = b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb
+SIZE (rust/crates/tar-0.4.40.crate) = 51844
+SHA256 (rust/crates/target-lexicon-0.12.11.crate) = 9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a
+SIZE (rust/crates/target-lexicon-0.12.11.crate) = 24594
+SHA256 (rust/crates/tempfile-3.8.0.crate) = cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef
+SIZE (rust/crates/tempfile-3.8.0.crate) = 31720
+SHA256 (rust/crates/termcolor-1.3.0.crate) = 6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64
+SIZE (rust/crates/termcolor-1.3.0.crate) = 18799
+SHA256 (rust/crates/text-size-1.1.1.crate) = f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233
+SIZE (rust/crates/text-size-1.1.1.crate) = 12553
+SHA256 (rust/crates/thiserror-1.0.49.crate) = 1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4
+SIZE (rust/crates/thiserror-1.0.49.crate) = 18912
+SHA256 (rust/crates/thiserror-impl-1.0.49.crate) = 10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc
+SIZE (rust/crates/thiserror-impl-1.0.49.crate) = 15101
+SHA256 (rust/crates/thread_local-1.1.7.crate) = 3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152
+SIZE (rust/crates/thread_local-1.1.7.crate) = 13585
+SHA256 (rust/crates/tiff-0.9.0.crate) = 6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211
+SIZE (rust/crates/tiff-0.9.0.crate) = 1418215
+SHA256 (rust/crates/tiny-skia-0.8.4.crate) = df8493a203431061e901613751931f047d1971337153f96d0e5e363d6dbf6a67
+SIZE (rust/crates/tiny-skia-0.8.4.crate) = 193684
+SHA256 (rust/crates/tiny-skia-0.10.0.crate) = 7db11798945fa5c3e5490c794ccca7c6de86d3afdd54b4eb324109939c6f37bc
+SIZE (rust/crates/tiny-skia-0.10.0.crate) = 200442
+SHA256 (rust/crates/tiny-skia-path-0.8.4.crate) = adbfb5d3f3dd57a0e11d12f4f13d4ebbbc1b5c15b7ab0a156d030b21da5f677c
+SIZE (rust/crates/tiny-skia-path-0.8.4.crate) = 45814
+SHA256 (rust/crates/tiny-skia-path-0.10.0.crate) = 2f60aa35c89ac2687ace1a2556eaaea68e8c0d47408a2e3e7f5c98a489e7281c
+SIZE (rust/crates/tiny-skia-path-0.10.0.crate) = 46740
+SHA256 (rust/crates/tiny-xlib-0.2.2.crate) = d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d
+SIZE (rust/crates/tiny-xlib-0.2.2.crate) = 15775
+SHA256 (rust/crates/tinyvec-1.6.0.crate) = 87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50
+SIZE (rust/crates/tinyvec-1.6.0.crate) = 45991
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
+SHA256 (rust/crates/tokio-1.32.0.crate) = 17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9
+SIZE (rust/crates/tokio-1.32.0.crate) = 725004
+SHA256 (rust/crates/tokio-macros-2.1.0.crate) = 630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e
+SIZE (rust/crates/tokio-macros-2.1.0.crate) = 11472
+SHA256 (rust/crates/toml-0.7.8.crate) = dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257
+SIZE (rust/crates/toml-0.7.8.crate) = 49671
+SHA256 (rust/crates/toml-0.8.2.crate) = 185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d
+SIZE (rust/crates/toml-0.8.2.crate) = 50425
+SHA256 (rust/crates/toml_datetime-0.6.3.crate) = 7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b
+SIZE (rust/crates/toml_datetime-0.6.3.crate) = 10770
+SHA256 (rust/crates/toml_edit-0.19.15.crate) = 1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421
+SIZE (rust/crates/toml_edit-0.19.15.crate) = 95324
+SHA256 (rust/crates/toml_edit-0.20.2.crate) = 396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338
+SIZE (rust/crates/toml_edit-0.20.2.crate) = 96487
+SHA256 (rust/crates/tracing-0.1.37.crate) = 8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8
+SIZE (rust/crates/tracing-0.1.37.crate) = 73888
+SHA256 (rust/crates/tracing-attributes-0.1.26.crate) = 5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab
+SIZE (rust/crates/tracing-attributes-0.1.26.crate) = 32060
+SHA256 (rust/crates/tracing-core-0.1.31.crate) = 0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a
+SIZE (rust/crates/tracing-core-0.1.31.crate) = 61263
+SHA256 (rust/crates/tracing-log-0.1.3.crate) = 78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922
+SIZE (rust/crates/tracing-log-0.1.3.crate) = 20549
+SHA256 (rust/crates/tracing-subscriber-0.3.17.crate) = 30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77
+SIZE (rust/crates/tracing-subscriber-0.3.17.crate) = 191711
+SHA256 (rust/crates/ttf-parser-0.15.2.crate) = 7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd
+SIZE (rust/crates/ttf-parser-0.15.2.crate) = 136251
+SHA256 (rust/crates/ttf-parser-0.18.1.crate) = 0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633
+SIZE (rust/crates/ttf-parser-0.18.1.crate) = 156167
+SHA256 (rust/crates/ttf-parser-0.19.2.crate) = 49d64318d8311fc2668e48b63969f4343e0a85c4a109aa8460d6672e364b8bd1
+SIZE (rust/crates/ttf-parser-0.19.2.crate) = 158329
+SHA256 (rust/crates/typenum-1.17.0.crate) = 42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825
+SIZE (rust/crates/typenum-1.17.0.crate) = 42849
+SHA256 (rust/crates/udev-0.7.0.crate) = 4ebdbbd670373442a12fe9ef7aeb53aec4147a5a27a00bbc3ab639f08f48191a
+SIZE (rust/crates/udev-0.7.0.crate) = 17980
+SHA256 (rust/crates/uds_windows-1.0.2.crate) = ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d
+SIZE (rust/crates/uds_windows-1.0.2.crate) = 16206
+SHA256 (rust/crates/unicode-bidi-0.3.13.crate) = 92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460
+SIZE (rust/crates/unicode-bidi-0.3.13.crate) = 44477
+SHA256 (rust/crates/unicode-bidi-mirroring-0.1.0.crate) = 56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694
+SIZE (rust/crates/unicode-bidi-mirroring-0.1.0.crate) = 8241
+SHA256 (rust/crates/unicode-ccc-0.1.2.crate) = cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1
+SIZE (rust/crates/unicode-ccc-0.1.2.crate) = 8848
+SHA256 (rust/crates/unicode-general-category-0.6.0.crate) = 2281c8c1d221438e373249e065ca4989c4c36952c211ff21a0ee91c44a3869e7
+SIZE (rust/crates/unicode-general-category-0.6.0.crate) = 35177
+SHA256 (rust/crates/unicode-ident-1.0.12.crate) = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b
+SIZE (rust/crates/unicode-ident-1.0.12.crate) = 42168
+SHA256 (rust/crates/unicode-linebreak-0.1.5.crate) = 3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f
+SIZE (rust/crates/unicode-linebreak-0.1.5.crate) = 15324
+SHA256 (rust/crates/unicode-normalization-0.1.22.crate) = 5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921
+SIZE (rust/crates/unicode-normalization-0.1.22.crate) = 122604
+SHA256 (rust/crates/unicode-script-0.5.5.crate) = 7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc
+SIZE (rust/crates/unicode-script-0.5.5.crate) = 43874
+SHA256 (rust/crates/unicode-segmentation-1.10.1.crate) = 1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36
+SIZE (rust/crates/unicode-segmentation-1.10.1.crate) = 98416
+SHA256 (rust/crates/unicode-vo-0.1.0.crate) = b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94
+SIZE (rust/crates/unicode-vo-0.1.0.crate) = 8084
+SHA256 (rust/crates/unicode-xid-0.2.4.crate) = f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c
+SIZE (rust/crates/unicode-xid-0.2.4.crate) = 15352
+SHA256 (rust/crates/untrusted-0.7.1.crate) = a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a
+SIZE (rust/crates/untrusted-0.7.1.crate) = 7924
+SHA256 (rust/crates/ureq-2.8.0.crate) = f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3
+SIZE (rust/crates/ureq-2.8.0.crate) = 112867
+SHA256 (rust/crates/url-2.4.1.crate) = 143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5
+SIZE (rust/crates/url-2.4.1.crate) = 78228
+SHA256 (rust/crates/usvg-0.34.1.crate) = d2304b933107198a910c1f3219acb65246f2b148f862703cffd51c6e62156abe
+SIZE (rust/crates/usvg-0.34.1.crate) = 28169
+SHA256 (rust/crates/usvg-parser-0.34.0.crate) = 12b940fea80394e3b14cb21c83fa1b8f8a41023c25929bba68bb84a76193ebed
+SIZE (rust/crates/usvg-parser-0.34.0.crate) = 65080
+SHA256 (rust/crates/usvg-text-layout-0.34.0.crate) = 69dfd6119f431aa7e969b4a69f9cc8b9ae37b8ae85bb26780ccfa3beaf8b71eb
+SIZE (rust/crates/usvg-text-layout-0.34.0.crate) = 21693
+SHA256 (rust/crates/usvg-tree-0.34.0.crate) = 3185eb13b6e3d3cf1817d29612251cc308d5a7e5e6235362e67efe832435c6d9
+SIZE (rust/crates/usvg-tree-0.34.0.crate) = 20369
+SHA256 (rust/crates/valuable-0.1.0.crate) = 830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d
+SIZE (rust/crates/valuable-0.1.0.crate) = 27718
+SHA256 (rust/crates/vec_map-0.8.2.crate) = f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191
+SIZE (rust/crates/vec_map-0.8.2.crate) = 14466
+SHA256 (rust/crates/version-compare-0.1.1.crate) = 579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29
+SIZE (rust/crates/version-compare-0.1.1.crate) = 13224
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/vtable-0.1.11.crate) = 9f4c7506238561777a1861d3dc3c0001877c475187e7bc4392ea87ebf631fd9c
+SIZE (rust/crates/vtable-0.1.11.crate) = 17800
+SHA256 (rust/crates/vtable-macro-0.1.10.crate) = 6b2b8eecdb8e4284adf5546fc518f048f6dc33e7203dbe36fa93a4add39b31f6
+SIZE (rust/crates/vtable-macro-0.1.10.crate) = 24990
+SHA256 (rust/crates/waker-fn-1.1.1.crate) = f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690
+SIZE (rust/crates/waker-fn-1.1.1.crate) = 6323
+SHA256 (rust/crates/walkdir-2.4.0.crate) = d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee
+SIZE (rust/crates/walkdir-2.4.0.crate) = 23550
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+SHA256 (rust/crates/wasm-bindgen-0.2.87.crate) = 7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342
+SIZE (rust/crates/wasm-bindgen-0.2.87.crate) = 175052
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.87.crate) = 5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd
+SIZE (rust/crates/wasm-bindgen-backend-0.2.87.crate) = 26821
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.87.crate) = dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d
+SIZE (rust/crates/wasm-bindgen-macro-0.2.87.crate) = 13897
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.87.crate) = 54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.87.crate) = 20006
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.87.crate) = ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1
+SIZE (rust/crates/wasm-bindgen-shared-0.2.87.crate) = 7248
+SHA256 (rust/crates/wayland-backend-0.1.2.crate) = 41b48e27457e8da3b2260ac60d0a94512f5cba36448679f3747c0865b7893ed8
+SIZE (rust/crates/wayland-backend-0.1.2.crate) = 68748
+SHA256 (rust/crates/wayland-backend-0.3.2.crate) = 19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4
+SIZE (rust/crates/wayland-backend-0.3.2.crate) = 69238
+SHA256 (rust/crates/wayland-client-0.29.5.crate) = 3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715
+SIZE (rust/crates/wayland-client-0.29.5.crate) = 71041
+SHA256 (rust/crates/wayland-client-0.30.2.crate) = 489c9654770f674fc7e266b3c579f4053d7551df0ceb392f153adb1f9ed06ac8
+SIZE (rust/crates/wayland-client-0.30.2.crate) = 65289
+SHA256 (rust/crates/wayland-client-0.31.1.crate) = 1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3
+SIZE (rust/crates/wayland-client-0.31.1.crate) = 62635
+SHA256 (rust/crates/wayland-commons-0.29.5.crate) = 8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902
+SIZE (rust/crates/wayland-commons-0.29.5.crate) = 20771
+SHA256 (rust/crates/wayland-cursor-0.29.5.crate) = 6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661
+SIZE (rust/crates/wayland-cursor-0.29.5.crate) = 6195
+SHA256 (rust/crates/wayland-protocols-0.29.5.crate) = b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6
+SIZE (rust/crates/wayland-protocols-0.29.5.crate) = 140859
+SHA256 (rust/crates/wayland-protocols-0.31.0.crate) = e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c
+SIZE (rust/crates/wayland-protocols-0.31.0.crate) = 134772
+SHA256 (rust/crates/wayland-protocols-misc-0.2.0.crate) = bfa5933740b200188c9b4c38601b8212e8c154d7de0d2cb171944e137a77de1e
+SIZE (rust/crates/wayland-protocols-misc-0.2.0.crate) = 13627
+SHA256 (rust/crates/wayland-protocols-wlr-0.2.0.crate) = ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6
+SIZE (rust/crates/wayland-protocols-wlr-0.2.0.crate) = 25804
+SHA256 (rust/crates/wayland-scanner-0.29.5.crate) = 8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53
+SIZE (rust/crates/wayland-scanner-0.29.5.crate) = 17248
+SHA256 (rust/crates/wayland-scanner-0.30.1.crate) = b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e
+SIZE (rust/crates/wayland-scanner-0.30.1.crate) = 34633
+SHA256 (rust/crates/wayland-scanner-0.31.0.crate) = fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c
+SIZE (rust/crates/wayland-scanner-0.31.0.crate) = 35245
+SHA256 (rust/crates/wayland-sys-0.29.5.crate) = be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4
+SIZE (rust/crates/wayland-sys-0.29.5.crate) = 7926
+SHA256 (rust/crates/wayland-sys-0.30.1.crate) = 96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06
+SIZE (rust/crates/wayland-sys-0.30.1.crate) = 8358
+SHA256 (rust/crates/wayland-sys-0.31.1.crate) = 15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af
+SIZE (rust/crates/wayland-sys-0.31.1.crate) = 8577
+SHA256 (rust/crates/web-sys-0.3.64.crate) = 9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b
+SIZE (rust/crates/web-sys-0.3.64.crate) = 725584
+SHA256 (rust/crates/webpki-roots-0.25.2.crate) = 14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc
+SIZE (rust/crates/webpki-roots-0.25.2.crate) = 250405
+SHA256 (rust/crates/weezl-0.1.7.crate) = 9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb
+SIZE (rust/crates/weezl-0.1.7.crate) = 42166
+SHA256 (rust/crates/which-4.4.2.crate) = 87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7
+SIZE (rust/crates/which-4.4.2.crate) = 15953
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.6.crate) = f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596
+SIZE (rust/crates/winapi-util-0.1.6.crate) = 12234
+SHA256 (rust/crates/winapi-wsapoll-0.1.1.crate) = 44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e
+SIZE (rust/crates/winapi-wsapoll-0.1.1.crate) = 2881
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-0.48.0.crate) = e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f
+SIZE (rust/crates/windows-0.48.0.crate) = 11864177
+SHA256 (rust/crates/windows-implement-0.48.0.crate) = 5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c
+SIZE (rust/crates/windows-implement-0.48.0.crate) = 8468
+SHA256 (rust/crates/windows-interface-0.48.0.crate) = e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7
+SIZE (rust/crates/windows-interface-0.48.0.crate) = 9533
+SHA256 (rust/crates/windows-sys-0.45.0.crate) = 75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0
+SIZE (rust/crates/windows-sys-0.45.0.crate) = 2568659
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-targets-0.42.2.crate) = 8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071
+SIZE (rust/crates/windows-targets-0.42.2.crate) = 5492
+SHA256 (rust/crates/windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c
+SIZE (rust/crates/windows-targets-0.48.5.crate) = 6904
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 364071
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.5.crate) = 418492
+SHA256 (rust/crates/windows_aarch64_msvc-0.42.2.crate) = e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43
+SIZE (rust/crates/windows_aarch64_msvc-0.42.2.crate) = 666981
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc
+SIZE (rust/crates/windows_aarch64_msvc-0.48.5.crate) = 798483
+SHA256 (rust/crates/windows_i686_gnu-0.42.2.crate) = c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f
+SIZE (rust/crates/windows_i686_gnu-0.42.2.crate) = 736236
+SHA256 (rust/crates/windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e
+SIZE (rust/crates/windows_i686_gnu-0.48.5.crate) = 844891
+SHA256 (rust/crates/windows_i686_msvc-0.42.2.crate) = 44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060
+SIZE (rust/crates/windows_i686_msvc-0.42.2.crate) = 724951
+SHA256 (rust/crates/windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406
+SIZE (rust/crates/windows_i686_msvc-0.48.5.crate) = 864300
+SHA256 (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36
+SIZE (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 699373
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e
+SIZE (rust/crates/windows_x86_64_gnu-0.48.5.crate) = 801619
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3
+SIZE (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 364068
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.5.crate) = 418486
+SHA256 (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0
+SIZE (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 666936
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538
+SIZE (rust/crates/windows_x86_64_msvc-0.48.5.crate) = 798412
+SHA256 (rust/crates/winit-0.28.7.crate) = 9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94
+SIZE (rust/crates/winit-0.28.7.crate) = 407921
+SHA256 (rust/crates/winnow-0.5.16.crate) = 037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907
+SIZE (rust/crates/winnow-0.5.16.crate) = 145939
+SHA256 (rust/crates/wio-0.2.2.crate) = 5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5
+SIZE (rust/crates/wio-0.2.2.crate) = 11214
+SHA256 (rust/crates/x11-clipboard-0.7.1.crate) = 980b9aa9226c3b7de8e2adb11bf20124327c054e0e5812d2aac0b5b5a87e7464
+SIZE (rust/crates/x11-clipboard-0.7.1.crate) = 8477
+SHA256 (rust/crates/x11-dl-2.21.0.crate) = 38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f
+SIZE (rust/crates/x11-dl-2.21.0.crate) = 66823
+SHA256 (rust/crates/x11rb-0.10.1.crate) = 592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507
+SIZE (rust/crates/x11rb-0.10.1.crate) = 207678
+SHA256 (rust/crates/x11rb-0.12.0.crate) = b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a
+SIZE (rust/crates/x11rb-0.12.0.crate) = 218514
+SHA256 (rust/crates/x11rb-protocol-0.10.0.crate) = 56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67
+SIZE (rust/crates/x11rb-protocol-0.10.0.crate) = 419025
+SHA256 (rust/crates/x11rb-protocol-0.12.0.crate) = 82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc
+SIZE (rust/crates/x11rb-protocol-0.12.0.crate) = 478311
+SHA256 (rust/crates/xattr-1.0.1.crate) = f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985
+SIZE (rust/crates/xattr-1.0.1.crate) = 12258
+SHA256 (rust/crates/xcursor-0.3.4.crate) = 463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7
+SIZE (rust/crates/xcursor-0.3.4.crate) = 6069
+SHA256 (rust/crates/xdg-home-1.0.0.crate) = 2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd
+SIZE (rust/crates/xdg-home-1.0.0.crate) = 3310
+SHA256 (rust/crates/xkbcommon-0.6.0.crate) = c286371c44b3572d19b09196c129a8fff47d7704d6494daefb44fec10f0278ab
+SIZE (rust/crates/xkbcommon-0.6.0.crate) = 58899
+SHA256 (rust/crates/xkeysym-0.2.0.crate) = 054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621
+SIZE (rust/crates/xkeysym-0.2.0.crate) = 101431
+SHA256 (rust/crates/xml-rs-0.8.19.crate) = 0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a
+SIZE (rust/crates/xml-rs-0.8.19.crate) = 54051
+SHA256 (rust/crates/xmlparser-0.13.6.crate) = 66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4
+SIZE (rust/crates/xmlparser-0.13.6.crate) = 26718
+SHA256 (rust/crates/xmlwriter-0.1.0.crate) = ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9
+SIZE (rust/crates/xmlwriter-0.1.0.crate) = 6261
+SHA256 (rust/crates/zbus-3.14.1.crate) = 31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948
+SIZE (rust/crates/zbus-3.14.1.crate) = 148931
+SHA256 (rust/crates/zbus_macros-3.14.1.crate) = 41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d
+SIZE (rust/crates/zbus_macros-3.14.1.crate) = 25893
+SHA256 (rust/crates/zbus_names-2.6.0.crate) = fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9
+SIZE (rust/crates/zbus_names-2.6.0.crate) = 9638
+SHA256 (rust/crates/zune-inflate-0.2.54.crate) = 73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02
+SIZE (rust/crates/zune-inflate-0.2.54.crate) = 37973
+SHA256 (rust/crates/zvariant-3.15.0.crate) = 44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c
+SIZE (rust/crates/zvariant-3.15.0.crate) = 72221
+SHA256 (rust/crates/zvariant_derive-3.15.0.crate) = 934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd
+SIZE (rust/crates/zvariant_derive-3.15.0.crate) = 10943
+SHA256 (rust/crates/zvariant_utils-1.0.1.crate) = 7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200
+SIZE (rust/crates/zvariant_utils-1.0.1.crate) = 6223
+SHA256 (waycrate-xdg-desktop-portal-luminous-v0.1.1_GH0.tar.gz) = 32ca45851bf0001ed51fb392fda5cc8b9d3537489596d7e8897600238af793a0
+SIZE (waycrate-xdg-desktop-portal-luminous-v0.1.1_GH0.tar.gz) = 53217
diff --git a/x11/xdg-desktop-portal-luminous/files/patch-drm-sys b/x11/xdg-desktop-portal-luminous/files/patch-drm-sys
new file mode 100644
index 000000000000..04f69f7d9157
--- /dev/null
+++ b/x11/xdg-desktop-portal-luminous/files/patch-drm-sys
@@ -0,0 +1,6727 @@
+https://github.com/Smithay/drm-rs/pull/172
+
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.4.0/src/platforms/freebsd/aarch64/bindings.rs
+@@ -0,0 +1,1342 @@
++/* automatically generated by rust-bindgen 0.59.2 */
++
++pub const DRM_NAME: &[u8; 4usize] = b"drm\0";
++pub const DRM_MIN_ORDER: u32 = 5;
++pub const DRM_MAX_ORDER: u32 = 22;
++pub const DRM_RAM_PERCENT: u32 = 10;
++pub const _DRM_LOCK_HELD: u32 = 2147483648;
++pub const _DRM_LOCK_CONT: u32 = 1073741824;
++pub const _DRM_VBLANK_HIGH_CRTC_SHIFT: u32 = 1;
++pub const _DRM_PRE_MODESET: u32 = 1;
++pub const _DRM_POST_MODESET: u32 = 2;
++pub const DRM_CAP_DUMB_BUFFER: u32 = 1;
++pub const DRM_CAP_VBLANK_HIGH_CRTC: u32 = 2;
++pub const DRM_CAP_DUMB_PREFERRED_DEPTH: u32 = 3;
++pub const DRM_CAP_DUMB_PREFER_SHADOW: u32 = 4;
++pub const DRM_CAP_PRIME: u32 = 5;
++pub const DRM_PRIME_CAP_IMPORT: u32 = 1;
++pub const DRM_PRIME_CAP_EXPORT: u32 = 2;
++pub const DRM_CAP_TIMESTAMP_MONOTONIC: u32 = 6;
++pub const DRM_CAP_ASYNC_PAGE_FLIP: u32 = 7;
++pub const DRM_CAP_CURSOR_WIDTH: u32 = 8;
++pub const DRM_CAP_CURSOR_HEIGHT: u32 = 9;
++pub const DRM_CAP_ADDFB2_MODIFIERS: u32 = 16;
++pub const DRM_CAP_PAGE_FLIP_TARGET: u32 = 17;
++pub const DRM_CAP_CRTC_IN_VBLANK_EVENT: u32 = 18;
++pub const DRM_CAP_SYNCOBJ: u32 = 19;
++pub const DRM_CAP_SYNCOBJ_TIMELINE: u32 = 20;
++pub const DRM_CLIENT_CAP_STEREO_3D: u32 = 1;
++pub const DRM_CLIENT_CAP_UNIVERSAL_PLANES: u32 = 2;
++pub const DRM_CLIENT_CAP_ATOMIC: u32 = 3;
++pub const DRM_CLIENT_CAP_ASPECT_RATIO: u32 = 4;
++pub const DRM_CLIENT_CAP_WRITEBACK_CONNECTORS: u32 = 5;
++pub const DRM_SYNCOBJ_CREATE_SIGNALED: u32 = 1;
++pub const DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT: u32 = 2;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE: u32 = 4;
++pub const DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_RELATIVE: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_NEXT_ON_MISS: u32 = 2;
++pub const DRM_CONNECTOR_NAME_LEN: u32 = 32;
++pub const DRM_DISPLAY_MODE_LEN: u32 = 32;
++pub const DRM_PROP_NAME_LEN: u32 = 32;
++pub const DRM_MODE_TYPE_BUILTIN: u32 = 1;
++pub const DRM_MODE_TYPE_CLOCK_C: u32 = 3;
++pub const DRM_MODE_TYPE_CRTC_C: u32 = 5;
++pub const DRM_MODE_TYPE_PREFERRED: u32 = 8;
++pub const DRM_MODE_TYPE_DEFAULT: u32 = 16;
++pub const DRM_MODE_TYPE_USERDEF: u32 = 32;
++pub const DRM_MODE_TYPE_DRIVER: u32 = 64;
++pub const DRM_MODE_TYPE_ALL: u32 = 104;
++pub const DRM_MODE_FLAG_PHSYNC: u32 = 1;
++pub const DRM_MODE_FLAG_NHSYNC: u32 = 2;
++pub const DRM_MODE_FLAG_PVSYNC: u32 = 4;
++pub const DRM_MODE_FLAG_NVSYNC: u32 = 8;
++pub const DRM_MODE_FLAG_INTERLACE: u32 = 16;
++pub const DRM_MODE_FLAG_DBLSCAN: u32 = 32;
++pub const DRM_MODE_FLAG_CSYNC: u32 = 64;
++pub const DRM_MODE_FLAG_PCSYNC: u32 = 128;
++pub const DRM_MODE_FLAG_NCSYNC: u32 = 256;
++pub const DRM_MODE_FLAG_HSKEW: u32 = 512;
++pub const DRM_MODE_FLAG_BCAST: u32 = 1024;
++pub const DRM_MODE_FLAG_PIXMUX: u32 = 2048;
++pub const DRM_MODE_FLAG_DBLCLK: u32 = 4096;
++pub const DRM_MODE_FLAG_CLKDIV2: u32 = 8192;
++pub const DRM_MODE_FLAG_3D_MASK: u32 = 507904;
++pub const DRM_MODE_FLAG_3D_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_3D_FRAME_PACKING: u32 = 16384;
++pub const DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE: u32 = 32768;
++pub const DRM_MODE_FLAG_3D_LINE_ALTERNATIVE: u32 = 49152;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL: u32 = 65536;
++pub const DRM_MODE_FLAG_3D_L_DEPTH: u32 = 81920;
++pub const DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH: u32 = 98304;
++pub const DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: u32 = 114688;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: u32 = 131072;
++pub const DRM_MODE_PICTURE_ASPECT_NONE: u32 = 0;
++pub const DRM_MODE_PICTURE_ASPECT_4_3: u32 = 1;
++pub const DRM_MODE_PICTURE_ASPECT_16_9: u32 = 2;
++pub const DRM_MODE_PICTURE_ASPECT_64_27: u32 = 3;
++pub const DRM_MODE_PICTURE_ASPECT_256_135: u32 = 4;
++pub const DRM_MODE_CONTENT_TYPE_NO_DATA: u32 = 0;
++pub const DRM_MODE_CONTENT_TYPE_GRAPHICS: u32 = 1;
++pub const DRM_MODE_CONTENT_TYPE_PHOTO: u32 = 2;
++pub const DRM_MODE_CONTENT_TYPE_CINEMA: u32 = 3;
++pub const DRM_MODE_CONTENT_TYPE_GAME: u32 = 4;
++pub const DRM_MODE_FLAG_PIC_AR_MASK: u32 = 7864320;
++pub const DRM_MODE_FLAG_PIC_AR_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_PIC_AR_4_3: u32 = 524288;
++pub const DRM_MODE_FLAG_PIC_AR_16_9: u32 = 1048576;
++pub const DRM_MODE_FLAG_PIC_AR_64_27: u32 = 1572864;
++pub const DRM_MODE_FLAG_PIC_AR_256_135: u32 = 2097152;
++pub const DRM_MODE_FLAG_ALL: u32 = 521215;
++pub const DRM_MODE_DPMS_ON: u32 = 0;
++pub const DRM_MODE_DPMS_STANDBY: u32 = 1;
++pub const DRM_MODE_DPMS_SUSPEND: u32 = 2;
++pub const DRM_MODE_DPMS_OFF: u32 = 3;
++pub const DRM_MODE_SCALE_NONE: u32 = 0;
++pub const DRM_MODE_SCALE_FULLSCREEN: u32 = 1;
++pub const DRM_MODE_SCALE_CENTER: u32 = 2;
++pub const DRM_MODE_SCALE_ASPECT: u32 = 3;
++pub const DRM_MODE_DITHERING_OFF: u32 = 0;
++pub const DRM_MODE_DITHERING_ON: u32 = 1;
++pub const DRM_MODE_DITHERING_AUTO: u32 = 2;
++pub const DRM_MODE_DIRTY_OFF: u32 = 0;
++pub const DRM_MODE_DIRTY_ON: u32 = 1;
++pub const DRM_MODE_DIRTY_ANNOTATE: u32 = 2;
++pub const DRM_MODE_LINK_STATUS_GOOD: u32 = 0;
++pub const DRM_MODE_LINK_STATUS_BAD: u32 = 1;
++pub const DRM_MODE_ROTATE_0: u32 = 1;
++pub const DRM_MODE_ROTATE_90: u32 = 2;
++pub const DRM_MODE_ROTATE_180: u32 = 4;
++pub const DRM_MODE_ROTATE_270: u32 = 8;
++pub const DRM_MODE_ROTATE_MASK: u32 = 15;
++pub const DRM_MODE_REFLECT_X: u32 = 16;
++pub const DRM_MODE_REFLECT_Y: u32 = 32;
++pub const DRM_MODE_REFLECT_MASK: u32 = 48;
++pub const DRM_MODE_CONTENT_PROTECTION_UNDESIRED: u32 = 0;
++pub const DRM_MODE_CONTENT_PROTECTION_DESIRED: u32 = 1;
++pub const DRM_MODE_CONTENT_PROTECTION_ENABLED: u32 = 2;
++pub const DRM_MODE_PRESENT_TOP_FIELD: u32 = 1;
++pub const DRM_MODE_PRESENT_BOTTOM_FIELD: u32 = 2;
++pub const DRM_MODE_ENCODER_NONE: u32 = 0;
++pub const DRM_MODE_ENCODER_DAC: u32 = 1;
++pub const DRM_MODE_ENCODER_TMDS: u32 = 2;
++pub const DRM_MODE_ENCODER_LVDS: u32 = 3;
++pub const DRM_MODE_ENCODER_TVDAC: u32 = 4;
++pub const DRM_MODE_ENCODER_VIRTUAL: u32 = 5;
++pub const DRM_MODE_ENCODER_DSI: u32 = 6;
++pub const DRM_MODE_ENCODER_DPMST: u32 = 7;
++pub const DRM_MODE_ENCODER_DPI: u32 = 8;
++pub const DRM_MODE_CONNECTOR_Unknown: u32 = 0;
++pub const DRM_MODE_CONNECTOR_VGA: u32 = 1;
++pub const DRM_MODE_CONNECTOR_DVII: u32 = 2;
++pub const DRM_MODE_CONNECTOR_DVID: u32 = 3;
++pub const DRM_MODE_CONNECTOR_DVIA: u32 = 4;
++pub const DRM_MODE_CONNECTOR_Composite: u32 = 5;
++pub const DRM_MODE_CONNECTOR_SVIDEO: u32 = 6;
++pub const DRM_MODE_CONNECTOR_LVDS: u32 = 7;
++pub const DRM_MODE_CONNECTOR_Component: u32 = 8;
++pub const DRM_MODE_CONNECTOR_9PinDIN: u32 = 9;
++pub const DRM_MODE_CONNECTOR_DisplayPort: u32 = 10;
++pub const DRM_MODE_CONNECTOR_HDMIA: u32 = 11;
++pub const DRM_MODE_CONNECTOR_HDMIB: u32 = 12;
++pub const DRM_MODE_CONNECTOR_TV: u32 = 13;
++pub const DRM_MODE_CONNECTOR_eDP: u32 = 14;
++pub const DRM_MODE_CONNECTOR_VIRTUAL: u32 = 15;
++pub const DRM_MODE_CONNECTOR_DSI: u32 = 16;
++pub const DRM_MODE_CONNECTOR_DPI: u32 = 17;
++pub const DRM_MODE_CONNECTOR_WRITEBACK: u32 = 18;
++pub const DRM_MODE_CONNECTOR_SPI: u32 = 19;
++pub const DRM_MODE_CONNECTOR_USB: u32 = 20;
++pub const DRM_MODE_PROP_PENDING: u32 = 1;
++pub const DRM_MODE_PROP_RANGE: u32 = 2;
++pub const DRM_MODE_PROP_IMMUTABLE: u32 = 4;
++pub const DRM_MODE_PROP_ENUM: u32 = 8;
++pub const DRM_MODE_PROP_BLOB: u32 = 16;
++pub const DRM_MODE_PROP_BITMASK: u32 = 32;
++pub const DRM_MODE_PROP_LEGACY_TYPE: u32 = 58;
++pub const DRM_MODE_PROP_EXTENDED_TYPE: u32 = 65472;
++pub const DRM_MODE_PROP_ATOMIC: u32 = 2147483648;
++pub const DRM_MODE_OBJECT_CRTC: u32 = 3435973836;
++pub const DRM_MODE_OBJECT_CONNECTOR: u32 = 3233857728;
++pub const DRM_MODE_OBJECT_ENCODER: u32 = 3772834016;
++pub const DRM_MODE_OBJECT_MODE: u32 = 3739147998;
++pub const DRM_MODE_OBJECT_PROPERTY: u32 = 2964369584;
++pub const DRM_MODE_OBJECT_FB: u32 = 4227595259;
++pub const DRM_MODE_OBJECT_BLOB: u32 = 3149642683;
++pub const DRM_MODE_OBJECT_PLANE: u32 = 4008636142;
++pub const DRM_MODE_OBJECT_ANY: u32 = 0;
++pub const DRM_MODE_FB_INTERLACED: u32 = 1;
++pub const DRM_MODE_FB_MODIFIERS: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_COPY: u32 = 1;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_FILL: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_FLAGS: u32 = 3;
++pub const DRM_MODE_FB_DIRTY_MAX_CLIPS: u32 = 256;
++pub const DRM_MODE_CURSOR_BO: u32 = 1;
++pub const DRM_MODE_CURSOR_MOVE: u32 = 2;
++pub const DRM_MODE_CURSOR_FLAGS: u32 = 3;
++pub const DRM_MODE_PAGE_FLIP_EVENT: u32 = 1;
++pub const DRM_MODE_PAGE_FLIP_ASYNC: u32 = 2;
++pub const DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE: u32 = 4;
++pub const DRM_MODE_PAGE_FLIP_TARGET_RELATIVE: u32 = 8;
++pub const DRM_MODE_PAGE_FLIP_TARGET: u32 = 12;
++pub const DRM_MODE_PAGE_FLIP_FLAGS: u32 = 15;
++pub const DRM_MODE_ATOMIC_TEST_ONLY: u32 = 256;
++pub const DRM_MODE_ATOMIC_NONBLOCK: u32 = 512;
++pub const DRM_MODE_ATOMIC_ALLOW_MODESET: u32 = 1024;
++pub const DRM_MODE_ATOMIC_FLAGS: u32 = 1795;
++pub const DRM_IOCTL_BASE: u8 = 100u8;
++pub const DRM_COMMAND_BASE: u32 = 64;
++pub const DRM_COMMAND_END: u32 = 160;
++pub const DRM_EVENT_VBLANK: u32 = 1;
++pub const DRM_EVENT_FLIP_COMPLETE: u32 = 2;
++pub const DRM_EVENT_CRTC_SEQUENCE: u32 = 3;
++pub type __uint16_t = libc::c_ushort;
++pub type __int32_t = libc::c_int;
++pub type __uint32_t = libc::c_uint;
++pub type __int64_t = libc::c_long;
++pub type __uint64_t = libc::c_ulong;
++pub type __size_t = __uint64_t;
++pub type size_t = __size_t;
++pub type __u16 = u16;
++pub type __s32 = i32;
++pub type __u32 = u32;
++pub type __s64 = i64;
++pub type __u64 = u64;
++pub type __kernel_size_t = size_t;
++pub type drm_handle_t = libc::c_ulong;
++pub type drm_context_t = libc::c_uint;
++pub type drm_drawable_t = libc::c_uint;
++pub type drm_magic_t = libc::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: libc::c_ushort,
++ pub y1: libc::c_ushort,
++ pub x2: libc::c_ushort,
++ pub y2: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: libc::c_uint,
++ pub rects: *mut drm_clip_rect,
++}
++impl Default for drm_drawable_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_tex_region {
++ pub next: libc::c_uchar,
++ pub prev: libc::c_uchar,
++ pub in_use: libc::c_uchar,
++ pub padding: libc::c_uchar,
++ pub age: libc::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: libc::c_uint,
++ pub padding: [libc::c_char; 60usize],
++}
++impl Default for drm_hw_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_version {
++ pub version_major: libc::c_int,
++ pub version_minor: libc::c_int,
++ pub version_patchlevel: libc::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut libc::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut libc::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut libc::c_char,
++}
++impl Default for drm_version {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_unique {
++ pub unique_len: __kernel_size_t,
++ pub unique: *mut libc::c_char,
++}
++impl Default for drm_unique {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_list {
++ pub count: libc::c_int,
++ pub version: *mut drm_version,
++}
++impl Default for drm_list {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_block {
++ pub unused: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_control {
++ pub func: drm_control__bindgen_ty_1::Type,
++ pub irq: libc::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const DRM_ADD_COMMAND: Type = 0;
++ pub const DRM_RM_COMMAND: Type = 1;
++ pub const DRM_INST_HANDLER: Type = 2;
++ pub const DRM_UNINST_HANDLER: Type = 3;
++}
++impl Default for drm_control {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_map_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_FRAME_BUFFER: Type = 0;
++ pub const _DRM_REGISTERS: Type = 1;
++ pub const _DRM_SHM: Type = 2;
++ pub const _DRM_AGP: Type = 3;
++ pub const _DRM_SCATTER_GATHER: Type = 4;
++ pub const _DRM_CONSISTENT: Type = 5;
++}
++pub mod drm_map_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_RESTRICTED: Type = 1;
++ pub const _DRM_READ_ONLY: Type = 2;
++ pub const _DRM_LOCKED: Type = 4;
++ pub const _DRM_KERNEL: Type = 8;
++ pub const _DRM_WRITE_COMBINING: Type = 16;
++ pub const _DRM_CONTAINS_LOCK: Type = 32;
++ pub const _DRM_REMOVABLE: Type = 64;
++ pub const _DRM_DRIVER: Type = 128;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_priv_map {
++ pub ctx_id: libc::c_uint,
++ pub handle: *mut libc::c_void,
++}
++impl Default for drm_ctx_priv_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_map {
++ pub offset: libc::c_ulong,
++ pub size: libc::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut libc::c_void,
++ pub mtrr: libc::c_int,
++}
++impl Default for drm_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_client {
++ pub idx: libc::c_int,
++ pub auth: libc::c_int,
++ pub pid: libc::c_ulong,
++ pub uid: libc::c_ulong,
++ pub magic: libc::c_ulong,
++ pub iocs: libc::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_STAT_LOCK: Type = 0;
++ pub const _DRM_STAT_OPENS: Type = 1;
++ pub const _DRM_STAT_CLOSES: Type = 2;
++ pub const _DRM_STAT_IOCTLS: Type = 3;
++ pub const _DRM_STAT_LOCKS: Type = 4;
++ pub const _DRM_STAT_UNLOCKS: Type = 5;
++ pub const _DRM_STAT_VALUE: Type = 6;
++ pub const _DRM_STAT_BYTE: Type = 7;
++ pub const _DRM_STAT_COUNT: Type = 8;
++ pub const _DRM_STAT_IRQ: Type = 9;
++ pub const _DRM_STAT_PRIMARY: Type = 10;
++ pub const _DRM_STAT_SECONDARY: Type = 11;
++ pub const _DRM_STAT_DMA: Type = 12;
++ pub const _DRM_STAT_SPECIAL: Type = 13;
++ pub const _DRM_STAT_MISSED: Type = 14;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats {
++ pub count: libc::c_ulong,
++ pub data: [drm_stats__bindgen_ty_1; 15usize],
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats__bindgen_ty_1 {
++ pub value: libc::c_ulong,
++ pub type_: drm_stat_type::Type,
++}
++impl Default for drm_stats__bindgen_ty_1 {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++impl Default for drm_stats {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_lock_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_LOCK_READY: Type = 1;
++ pub const _DRM_LOCK_QUIESCENT: Type = 2;
++ pub const _DRM_LOCK_FLUSH: Type = 4;
++ pub const _DRM_LOCK_FLUSH_ALL: Type = 8;
++ pub const _DRM_HALT_ALL_QUEUES: Type = 16;
++ pub const _DRM_HALT_CUR_QUEUES: Type = 32;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_lock {
++ pub context: libc::c_int,
++ pub flags: drm_lock_flags::Type,
++}
++impl Default for drm_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_dma_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_DMA_BLOCK: Type = 1;
++ pub const _DRM_DMA_WHILE_LOCKED: Type = 2;
++ pub const _DRM_DMA_PRIORITY: Type = 4;
++ pub const _DRM_DMA_WAIT: Type = 16;
++ pub const _DRM_DMA_SMALLER_OK: Type = 32;
++ pub const _DRM_DMA_LARGER_OK: Type = 64;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_desc {
++ pub count: libc::c_int,
++ pub size: libc::c_int,
++ pub low_mark: libc::c_int,
++ pub high_mark: libc::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: libc::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const _DRM_PAGE_ALIGN: Type = 1;
++ pub const _DRM_AGP_BUFFER: Type = 2;
++ pub const _DRM_SG_BUFFER: Type = 4;
++ pub const _DRM_FB_BUFFER: Type = 8;
++ pub const _DRM_PCI_BUFFER_RO: Type = 16;
++}
++impl Default for drm_buf_desc {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_info {
++ pub count: libc::c_int,
++ pub list: *mut drm_buf_desc,
++}
++impl Default for drm_buf_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_free {
++ pub count: libc::c_int,
++ pub list: *mut libc::c_int,
++}
++impl Default for drm_buf_free {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_pub {
++ pub idx: libc::c_int,
++ pub total: libc::c_int,
++ pub used: libc::c_int,
++ pub address: *mut libc::c_void,
++}
++impl Default for drm_buf_pub {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_map {
++ pub count: libc::c_int,
++ pub virtual_: *mut libc::c_void,
++ pub list: *mut drm_buf_pub,
++}
++impl Default for drm_buf_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_dma {
++ pub context: libc::c_int,
++ pub send_count: libc::c_int,
++ pub send_indices: *mut libc::c_int,
++ pub send_sizes: *mut libc::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: libc::c_int,
++ pub request_size: libc::c_int,
++ pub request_indices: *mut libc::c_int,
++ pub request_sizes: *mut libc::c_int,
++ pub granted_count: libc::c_int,
++}
++impl Default for drm_dma {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_ctx_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_CONTEXT_PRESERVED: Type = 1;
++ pub const _DRM_CONTEXT_2DONLY: Type = 2;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx {
++ pub handle: drm_context_t,
++ pub flags: drm_ctx_flags::Type,
++}
++impl Default for drm_ctx {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_res {
++ pub count: libc::c_int,
++ pub contexts: *mut drm_ctx,
++}
++impl Default for drm_ctx_res {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_draw {
++ pub handle: drm_drawable_t,
++}
++pub mod drm_drawable_info_type_t {
++ pub type Type = libc::c_uint;
++ pub const DRM_DRAWABLE_CLIPRECTS: Type = 0;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_update_draw {
++ pub handle: drm_drawable_t,
++ pub type_: libc::c_uint,
++ pub num: libc::c_uint,
++ pub data: libc::c_ulonglong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_auth {
++ pub magic: drm_magic_t,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_irq_busid {
++ pub irq: libc::c_int,
++ pub busnum: libc::c_int,
++ pub devnum: libc::c_int,
++ pub funcnum: libc::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_VBLANK_ABSOLUTE: Type = 0;
++ pub const _DRM_VBLANK_RELATIVE: Type = 1;
++ pub const _DRM_VBLANK_HIGH_CRTC_MASK: Type = 62;
++ pub const _DRM_VBLANK_EVENT: Type = 67108864;
++ pub const _DRM_VBLANK_FLIP: Type = 134217728;
++ pub const _DRM_VBLANK_NEXTONMISS: Type = 268435456;
++ pub const _DRM_VBLANK_SECONDARY: Type = 536870912;
++ pub const _DRM_VBLANK_SIGNAL: Type = 1073741824;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_request {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub signal: libc::c_ulong,
++}
++impl Default for drm_wait_vblank_request {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_reply {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub tval_sec: libc::c_long,
++ pub tval_usec: libc::c_long,
++}
++impl Default for drm_wait_vblank_reply {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Copy, Clone)]
++pub union drm_wait_vblank {
++ pub request: drm_wait_vblank_request,
++ pub reply: drm_wait_vblank_reply,
++}
++impl Default for drm_wait_vblank {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_modeset_ctl {
++ pub crtc: __u32,
++ pub cmd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_mode {
++ pub mode: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++ pub type_: libc::c_ulong,
++ pub physical: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: libc::c_ulong,
++ pub offset: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: libc::c_int,
++ pub agp_version_minor: libc::c_int,
++ pub mode: libc::c_ulong,
++ pub aperture_base: libc::c_ulong,
++ pub aperture_size: libc::c_ulong,
++ pub memory_allowed: libc::c_ulong,
++ pub memory_used: libc::c_ulong,
++ pub id_vendor: libc::c_ushort,
++ pub id_device: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: libc::c_int,
++ pub drm_di_minor: libc::c_int,
++ pub drm_dd_major: libc::c_int,
++ pub drm_dd_minor: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_close {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_flink {
++ pub handle: __u32,
++ pub name: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_open {
++ pub name: __u32,
++ pub handle: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_get_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_client_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_prime_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_create {
++ pub handle: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_destroy {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_transfer {
++ pub src_handle: __u32,
++ pub dst_handle: __u32,
++ pub src_point: __u64,
++ pub dst_point: __u64,
++ pub flags: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_wait {
++ pub handles: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_wait {
++ pub handles: __u64,
++ pub points: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_array {
++ pub handles: __u64,
++ pub count_handles: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_array {
++ pub handles: __u64,
++ pub points: __u64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_get_sequence {
++ pub crtc_id: __u32,
++ pub active: __u32,
++ pub sequence: __u64,
++ pub sequence_ns: __s64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_queue_sequence {
++ pub crtc_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_modeinfo {
++ pub clock: __u32,
++ pub hdisplay: __u16,
++ pub hsync_start: __u16,
++ pub hsync_end: __u16,
++ pub htotal: __u16,
++ pub hskew: __u16,
++ pub vdisplay: __u16,
++ pub vsync_start: __u16,
++ pub vsync_end: __u16,
++ pub vtotal: __u16,
++ pub vscan: __u16,
++ pub vrefresh: __u32,
++ pub flags: __u32,
++ pub type_: __u32,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_card_res {
++ pub fb_id_ptr: __u64,
++ pub crtc_id_ptr: __u64,
++ pub connector_id_ptr: __u64,
++ pub encoder_id_ptr: __u64,
++ pub count_fbs: __u32,
++ pub count_crtcs: __u32,
++ pub count_connectors: __u32,
++ pub count_encoders: __u32,
++ pub min_width: __u32,
++ pub max_width: __u32,
++ pub min_height: __u32,
++ pub max_height: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc {
++ pub set_connectors_ptr: __u64,
++ pub count_connectors: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub x: __u32,
++ pub y: __u32,
++ pub gamma_size: __u32,
++ pub mode_valid: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_set_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub crtc_x: __s32,
++ pub crtc_y: __s32,
++ pub crtc_w: __u32,
++ pub crtc_h: __u32,
++ pub src_x: __u32,
++ pub src_y: __u32,
++ pub src_h: __u32,
++ pub src_w: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub possible_crtcs: __u32,
++ pub gamma_size: __u32,
++ pub count_format_types: __u32,
++ pub format_type_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane_res {
++ pub plane_id_ptr: __u64,
++ pub count_planes: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_encoder {
++ pub encoder_id: __u32,
++ pub encoder_type: __u32,
++ pub crtc_id: __u32,
++ pub possible_crtcs: __u32,
++ pub possible_clones: __u32,
++}
++pub mod drm_mode_subconnector {
++ pub type Type = libc::c_uint;
++ pub const DRM_MODE_SUBCONNECTOR_Automatic: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_Unknown: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_VGA: Type = 1;
++ pub const DRM_MODE_SUBCONNECTOR_DVID: Type = 3;
++ pub const DRM_MODE_SUBCONNECTOR_DVIA: Type = 4;
++ pub const DRM_MODE_SUBCONNECTOR_Composite: Type = 5;
++ pub const DRM_MODE_SUBCONNECTOR_SVIDEO: Type = 6;
++ pub const DRM_MODE_SUBCONNECTOR_Component: Type = 8;
++ pub const DRM_MODE_SUBCONNECTOR_SCART: Type = 9;
++ pub const DRM_MODE_SUBCONNECTOR_DisplayPort: Type = 10;
++ pub const DRM_MODE_SUBCONNECTOR_HDMIA: Type = 11;
++ pub const DRM_MODE_SUBCONNECTOR_Native: Type = 15;
++ pub const DRM_MODE_SUBCONNECTOR_Wireless: Type = 18;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_connector {
++ pub encoders_ptr: __u64,
++ pub modes_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_modes: __u32,
++ pub count_props: __u32,
++ pub count_encoders: __u32,
++ pub encoder_id: __u32,
++ pub connector_id: __u32,
++ pub connector_type: __u32,
++ pub connector_type_id: __u32,
++ pub connection: __u32,
++ pub mm_width: __u32,
++ pub mm_height: __u32,
++ pub subpixel: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_property_enum {
++ pub value: __u64,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_property {
++ pub values_ptr: __u64,
++ pub enum_blob_ptr: __u64,
++ pub prop_id: __u32,
++ pub flags: __u32,
++ pub name: [libc::c_char; 32usize],
++ pub count_values: __u32,
++ pub count_enum_blobs: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_connector_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub connector_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_get_properties {
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_props: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_blob {
++ pub blob_id: __u32,
++ pub length: __u32,
++ pub data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pitch: __u32,
++ pub bpp: __u32,
++ pub depth: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd2 {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pixel_format: __u32,
++ pub flags: __u32,
++ pub handles: [__u32; 4usize],
++ pub pitches: [__u32; 4usize],
++ pub offsets: [__u32; 4usize],
++ pub modifier: [__u64; 4usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_dirty_cmd {
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub color: __u32,
++ pub num_clips: __u32,
++ pub clips_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_mode_cmd {
++ pub connector_id: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor2 {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++ pub hot_x: __s32,
++ pub hot_y: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_lut {
++ pub crtc_id: __u32,
++ pub gamma_size: __u32,
++ pub red: __u64,
++ pub green: __u64,
++ pub blue: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_ctm {
++ pub matrix: [__u64; 9usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_lut {
++ pub red: __u16,
++ pub green: __u16,
++ pub blue: __u16,
++ pub reserved: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct hdr_metadata_infoframe__bindgen_ty_1 {
++ pub x: __u16,
++ pub y: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub reserved: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip_target {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_dumb {
++ pub height: __u32,
++ pub width: __u32,
++ pub bpp: __u32,
++ pub flags: __u32,
++ pub handle: __u32,
++ pub pitch: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_map_dumb {
++ pub handle: __u32,
++ pub pad: __u32,
++ pub offset: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_dumb {
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_atomic {
++ pub flags: __u32,
++ pub count_objs: __u32,
++ pub objs_ptr: __u64,
++ pub count_props_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub reserved: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier_blob {
++ pub version: __u32,
++ pub flags: __u32,
++ pub count_formats: __u32,
++ pub formats_offset: __u32,
++ pub count_modifiers: __u32,
++ pub modifiers_offset: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier {
++ pub formats: __u64,
++ pub offset: __u32,
++ pub pad: __u32,
++ pub modifier: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_blob {
++ pub data: __u64,
++ pub length: __u32,
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_blob {
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_lease {
++ pub object_ids: __u64,
++ pub object_count: __u32,
++ pub flags: __u32,
++ pub lessee_id: __u32,
++ pub fd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_list_lessees {
++ pub count_lessees: __u32,
++ pub pad: __u32,
++ pub lessees_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_lease {
++ pub count_objects: __u32,
++ pub pad: __u32,
++ pub objects_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_revoke_lease {
++ pub lessee_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_rect {
++ pub x1: __s32,
++ pub y1: __s32,
++ pub x2: __s32,
++ pub y2: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event {
++ pub type_: __u32,
++ pub length: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_vblank {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub tv_sec: __u32,
++ pub tv_usec: __u32,
++ pub sequence: __u32,
++ pub crtc_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_crtc_sequence {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub time_ns: __s64,
++ pub sequence: __u64,
++}
++pub type drm_clip_rect_t = drm_clip_rect;
++pub type drm_drawable_info_t = drm_drawable_info;
++pub type drm_tex_region_t = drm_tex_region;
++pub type drm_hw_lock_t = drm_hw_lock;
++pub type drm_version_t = drm_version;
++pub type drm_unique_t = drm_unique;
++pub type drm_list_t = drm_list;
++pub type drm_block_t = drm_block;
++pub type drm_control_t = drm_control;
++pub use self::drm_map_flags::Type as drm_map_flags_t;
++pub use self::drm_map_type::Type as drm_map_type_t;
++pub type drm_ctx_priv_map_t = drm_ctx_priv_map;
++pub type drm_map_t = drm_map;
++pub type drm_client_t = drm_client;
++pub use self::drm_stat_type::Type as drm_stat_type_t;
++pub type drm_stats_t = drm_stats;
++pub use self::drm_lock_flags::Type as drm_lock_flags_t;
++pub type drm_lock_t = drm_lock;
++pub use self::drm_dma_flags::Type as drm_dma_flags_t;
++pub type drm_buf_desc_t = drm_buf_desc;
++pub type drm_buf_info_t = drm_buf_info;
++pub type drm_buf_free_t = drm_buf_free;
++pub type drm_buf_pub_t = drm_buf_pub;
++pub type drm_buf_map_t = drm_buf_map;
++pub type drm_dma_t = drm_dma;
++pub type drm_wait_vblank_t = drm_wait_vblank;
++pub type drm_agp_mode_t = drm_agp_mode;
++pub use self::drm_ctx_flags::Type as drm_ctx_flags_t;
++pub type drm_ctx_t = drm_ctx;
++pub type drm_ctx_res_t = drm_ctx_res;
++pub type drm_draw_t = drm_draw;
++pub type drm_update_draw_t = drm_update_draw;
++pub type drm_auth_t = drm_auth;
++pub type drm_irq_busid_t = drm_irq_busid;
++pub use self::drm_vblank_seq_type::Type as drm_vblank_seq_type_t;
++pub type drm_agp_buffer_t = drm_agp_buffer;
++pub type drm_agp_binding_t = drm_agp_binding;
++pub type drm_agp_info_t = drm_agp_info;
++pub type drm_scatter_gather_t = drm_scatter_gather;
++pub type drm_set_version_t = drm_set_version;
++pub const DRM_MODE_PROP_SIGNED_RANGE: libc::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: libc::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.4.0/src/platforms/freebsd/arm/bindings.rs
+@@ -0,0 +1,1342 @@
++/* automatically generated by rust-bindgen 0.59.2 */
++
++pub const DRM_NAME: &[u8; 4usize] = b"drm\0";
++pub const DRM_MIN_ORDER: u32 = 5;
++pub const DRM_MAX_ORDER: u32 = 22;
++pub const DRM_RAM_PERCENT: u32 = 10;
++pub const _DRM_LOCK_HELD: u32 = 2147483648;
++pub const _DRM_LOCK_CONT: u32 = 1073741824;
++pub const _DRM_VBLANK_HIGH_CRTC_SHIFT: u32 = 1;
++pub const _DRM_PRE_MODESET: u32 = 1;
++pub const _DRM_POST_MODESET: u32 = 2;
++pub const DRM_CAP_DUMB_BUFFER: u32 = 1;
++pub const DRM_CAP_VBLANK_HIGH_CRTC: u32 = 2;
++pub const DRM_CAP_DUMB_PREFERRED_DEPTH: u32 = 3;
++pub const DRM_CAP_DUMB_PREFER_SHADOW: u32 = 4;
++pub const DRM_CAP_PRIME: u32 = 5;
++pub const DRM_PRIME_CAP_IMPORT: u32 = 1;
++pub const DRM_PRIME_CAP_EXPORT: u32 = 2;
++pub const DRM_CAP_TIMESTAMP_MONOTONIC: u32 = 6;
++pub const DRM_CAP_ASYNC_PAGE_FLIP: u32 = 7;
++pub const DRM_CAP_CURSOR_WIDTH: u32 = 8;
++pub const DRM_CAP_CURSOR_HEIGHT: u32 = 9;
++pub const DRM_CAP_ADDFB2_MODIFIERS: u32 = 16;
++pub const DRM_CAP_PAGE_FLIP_TARGET: u32 = 17;
++pub const DRM_CAP_CRTC_IN_VBLANK_EVENT: u32 = 18;
++pub const DRM_CAP_SYNCOBJ: u32 = 19;
++pub const DRM_CAP_SYNCOBJ_TIMELINE: u32 = 20;
++pub const DRM_CLIENT_CAP_STEREO_3D: u32 = 1;
++pub const DRM_CLIENT_CAP_UNIVERSAL_PLANES: u32 = 2;
++pub const DRM_CLIENT_CAP_ATOMIC: u32 = 3;
++pub const DRM_CLIENT_CAP_ASPECT_RATIO: u32 = 4;
++pub const DRM_CLIENT_CAP_WRITEBACK_CONNECTORS: u32 = 5;
++pub const DRM_SYNCOBJ_CREATE_SIGNALED: u32 = 1;
++pub const DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT: u32 = 2;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE: u32 = 4;
++pub const DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_RELATIVE: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_NEXT_ON_MISS: u32 = 2;
++pub const DRM_CONNECTOR_NAME_LEN: u32 = 32;
++pub const DRM_DISPLAY_MODE_LEN: u32 = 32;
++pub const DRM_PROP_NAME_LEN: u32 = 32;
++pub const DRM_MODE_TYPE_BUILTIN: u32 = 1;
++pub const DRM_MODE_TYPE_CLOCK_C: u32 = 3;
++pub const DRM_MODE_TYPE_CRTC_C: u32 = 5;
++pub const DRM_MODE_TYPE_PREFERRED: u32 = 8;
++pub const DRM_MODE_TYPE_DEFAULT: u32 = 16;
++pub const DRM_MODE_TYPE_USERDEF: u32 = 32;
++pub const DRM_MODE_TYPE_DRIVER: u32 = 64;
++pub const DRM_MODE_TYPE_ALL: u32 = 104;
++pub const DRM_MODE_FLAG_PHSYNC: u32 = 1;
++pub const DRM_MODE_FLAG_NHSYNC: u32 = 2;
++pub const DRM_MODE_FLAG_PVSYNC: u32 = 4;
++pub const DRM_MODE_FLAG_NVSYNC: u32 = 8;
++pub const DRM_MODE_FLAG_INTERLACE: u32 = 16;
++pub const DRM_MODE_FLAG_DBLSCAN: u32 = 32;
++pub const DRM_MODE_FLAG_CSYNC: u32 = 64;
++pub const DRM_MODE_FLAG_PCSYNC: u32 = 128;
++pub const DRM_MODE_FLAG_NCSYNC: u32 = 256;
++pub const DRM_MODE_FLAG_HSKEW: u32 = 512;
++pub const DRM_MODE_FLAG_BCAST: u32 = 1024;
++pub const DRM_MODE_FLAG_PIXMUX: u32 = 2048;
++pub const DRM_MODE_FLAG_DBLCLK: u32 = 4096;
++pub const DRM_MODE_FLAG_CLKDIV2: u32 = 8192;
++pub const DRM_MODE_FLAG_3D_MASK: u32 = 507904;
++pub const DRM_MODE_FLAG_3D_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_3D_FRAME_PACKING: u32 = 16384;
++pub const DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE: u32 = 32768;
++pub const DRM_MODE_FLAG_3D_LINE_ALTERNATIVE: u32 = 49152;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL: u32 = 65536;
++pub const DRM_MODE_FLAG_3D_L_DEPTH: u32 = 81920;
++pub const DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH: u32 = 98304;
++pub const DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: u32 = 114688;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: u32 = 131072;
++pub const DRM_MODE_PICTURE_ASPECT_NONE: u32 = 0;
++pub const DRM_MODE_PICTURE_ASPECT_4_3: u32 = 1;
++pub const DRM_MODE_PICTURE_ASPECT_16_9: u32 = 2;
++pub const DRM_MODE_PICTURE_ASPECT_64_27: u32 = 3;
++pub const DRM_MODE_PICTURE_ASPECT_256_135: u32 = 4;
++pub const DRM_MODE_CONTENT_TYPE_NO_DATA: u32 = 0;
++pub const DRM_MODE_CONTENT_TYPE_GRAPHICS: u32 = 1;
++pub const DRM_MODE_CONTENT_TYPE_PHOTO: u32 = 2;
++pub const DRM_MODE_CONTENT_TYPE_CINEMA: u32 = 3;
++pub const DRM_MODE_CONTENT_TYPE_GAME: u32 = 4;
++pub const DRM_MODE_FLAG_PIC_AR_MASK: u32 = 7864320;
++pub const DRM_MODE_FLAG_PIC_AR_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_PIC_AR_4_3: u32 = 524288;
++pub const DRM_MODE_FLAG_PIC_AR_16_9: u32 = 1048576;
++pub const DRM_MODE_FLAG_PIC_AR_64_27: u32 = 1572864;
++pub const DRM_MODE_FLAG_PIC_AR_256_135: u32 = 2097152;
++pub const DRM_MODE_FLAG_ALL: u32 = 521215;
++pub const DRM_MODE_DPMS_ON: u32 = 0;
++pub const DRM_MODE_DPMS_STANDBY: u32 = 1;
++pub const DRM_MODE_DPMS_SUSPEND: u32 = 2;
++pub const DRM_MODE_DPMS_OFF: u32 = 3;
++pub const DRM_MODE_SCALE_NONE: u32 = 0;
++pub const DRM_MODE_SCALE_FULLSCREEN: u32 = 1;
++pub const DRM_MODE_SCALE_CENTER: u32 = 2;
++pub const DRM_MODE_SCALE_ASPECT: u32 = 3;
++pub const DRM_MODE_DITHERING_OFF: u32 = 0;
++pub const DRM_MODE_DITHERING_ON: u32 = 1;
++pub const DRM_MODE_DITHERING_AUTO: u32 = 2;
++pub const DRM_MODE_DIRTY_OFF: u32 = 0;
++pub const DRM_MODE_DIRTY_ON: u32 = 1;
++pub const DRM_MODE_DIRTY_ANNOTATE: u32 = 2;
++pub const DRM_MODE_LINK_STATUS_GOOD: u32 = 0;
++pub const DRM_MODE_LINK_STATUS_BAD: u32 = 1;
++pub const DRM_MODE_ROTATE_0: u32 = 1;
++pub const DRM_MODE_ROTATE_90: u32 = 2;
++pub const DRM_MODE_ROTATE_180: u32 = 4;
++pub const DRM_MODE_ROTATE_270: u32 = 8;
++pub const DRM_MODE_ROTATE_MASK: u32 = 15;
++pub const DRM_MODE_REFLECT_X: u32 = 16;
++pub const DRM_MODE_REFLECT_Y: u32 = 32;
++pub const DRM_MODE_REFLECT_MASK: u32 = 48;
++pub const DRM_MODE_CONTENT_PROTECTION_UNDESIRED: u32 = 0;
++pub const DRM_MODE_CONTENT_PROTECTION_DESIRED: u32 = 1;
++pub const DRM_MODE_CONTENT_PROTECTION_ENABLED: u32 = 2;
++pub const DRM_MODE_PRESENT_TOP_FIELD: u32 = 1;
++pub const DRM_MODE_PRESENT_BOTTOM_FIELD: u32 = 2;
++pub const DRM_MODE_ENCODER_NONE: u32 = 0;
++pub const DRM_MODE_ENCODER_DAC: u32 = 1;
++pub const DRM_MODE_ENCODER_TMDS: u32 = 2;
++pub const DRM_MODE_ENCODER_LVDS: u32 = 3;
++pub const DRM_MODE_ENCODER_TVDAC: u32 = 4;
++pub const DRM_MODE_ENCODER_VIRTUAL: u32 = 5;
++pub const DRM_MODE_ENCODER_DSI: u32 = 6;
++pub const DRM_MODE_ENCODER_DPMST: u32 = 7;
++pub const DRM_MODE_ENCODER_DPI: u32 = 8;
++pub const DRM_MODE_CONNECTOR_Unknown: u32 = 0;
++pub const DRM_MODE_CONNECTOR_VGA: u32 = 1;
++pub const DRM_MODE_CONNECTOR_DVII: u32 = 2;
++pub const DRM_MODE_CONNECTOR_DVID: u32 = 3;
++pub const DRM_MODE_CONNECTOR_DVIA: u32 = 4;
++pub const DRM_MODE_CONNECTOR_Composite: u32 = 5;
++pub const DRM_MODE_CONNECTOR_SVIDEO: u32 = 6;
++pub const DRM_MODE_CONNECTOR_LVDS: u32 = 7;
++pub const DRM_MODE_CONNECTOR_Component: u32 = 8;
++pub const DRM_MODE_CONNECTOR_9PinDIN: u32 = 9;
++pub const DRM_MODE_CONNECTOR_DisplayPort: u32 = 10;
++pub const DRM_MODE_CONNECTOR_HDMIA: u32 = 11;
++pub const DRM_MODE_CONNECTOR_HDMIB: u32 = 12;
++pub const DRM_MODE_CONNECTOR_TV: u32 = 13;
++pub const DRM_MODE_CONNECTOR_eDP: u32 = 14;
++pub const DRM_MODE_CONNECTOR_VIRTUAL: u32 = 15;
++pub const DRM_MODE_CONNECTOR_DSI: u32 = 16;
++pub const DRM_MODE_CONNECTOR_DPI: u32 = 17;
++pub const DRM_MODE_CONNECTOR_WRITEBACK: u32 = 18;
++pub const DRM_MODE_CONNECTOR_SPI: u32 = 19;
++pub const DRM_MODE_CONNECTOR_USB: u32 = 20;
++pub const DRM_MODE_PROP_PENDING: u32 = 1;
++pub const DRM_MODE_PROP_RANGE: u32 = 2;
++pub const DRM_MODE_PROP_IMMUTABLE: u32 = 4;
++pub const DRM_MODE_PROP_ENUM: u32 = 8;
++pub const DRM_MODE_PROP_BLOB: u32 = 16;
++pub const DRM_MODE_PROP_BITMASK: u32 = 32;
++pub const DRM_MODE_PROP_LEGACY_TYPE: u32 = 58;
++pub const DRM_MODE_PROP_EXTENDED_TYPE: u32 = 65472;
++pub const DRM_MODE_PROP_ATOMIC: u32 = 2147483648;
++pub const DRM_MODE_OBJECT_CRTC: u32 = 3435973836;
++pub const DRM_MODE_OBJECT_CONNECTOR: u32 = 3233857728;
++pub const DRM_MODE_OBJECT_ENCODER: u32 = 3772834016;
++pub const DRM_MODE_OBJECT_MODE: u32 = 3739147998;
++pub const DRM_MODE_OBJECT_PROPERTY: u32 = 2964369584;
++pub const DRM_MODE_OBJECT_FB: u32 = 4227595259;
++pub const DRM_MODE_OBJECT_BLOB: u32 = 3149642683;
++pub const DRM_MODE_OBJECT_PLANE: u32 = 4008636142;
++pub const DRM_MODE_OBJECT_ANY: u32 = 0;
++pub const DRM_MODE_FB_INTERLACED: u32 = 1;
++pub const DRM_MODE_FB_MODIFIERS: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_COPY: u32 = 1;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_FILL: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_FLAGS: u32 = 3;
++pub const DRM_MODE_FB_DIRTY_MAX_CLIPS: u32 = 256;
++pub const DRM_MODE_CURSOR_BO: u32 = 1;
++pub const DRM_MODE_CURSOR_MOVE: u32 = 2;
++pub const DRM_MODE_CURSOR_FLAGS: u32 = 3;
++pub const DRM_MODE_PAGE_FLIP_EVENT: u32 = 1;
++pub const DRM_MODE_PAGE_FLIP_ASYNC: u32 = 2;
++pub const DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE: u32 = 4;
++pub const DRM_MODE_PAGE_FLIP_TARGET_RELATIVE: u32 = 8;
++pub const DRM_MODE_PAGE_FLIP_TARGET: u32 = 12;
++pub const DRM_MODE_PAGE_FLIP_FLAGS: u32 = 15;
++pub const DRM_MODE_ATOMIC_TEST_ONLY: u32 = 256;
++pub const DRM_MODE_ATOMIC_NONBLOCK: u32 = 512;
++pub const DRM_MODE_ATOMIC_ALLOW_MODESET: u32 = 1024;
++pub const DRM_MODE_ATOMIC_FLAGS: u32 = 1795;
++pub const DRM_IOCTL_BASE: u8 = 100u8;
++pub const DRM_COMMAND_BASE: u32 = 64;
++pub const DRM_COMMAND_END: u32 = 160;
++pub const DRM_EVENT_VBLANK: u32 = 1;
++pub const DRM_EVENT_FLIP_COMPLETE: u32 = 2;
++pub const DRM_EVENT_CRTC_SEQUENCE: u32 = 3;
++pub type __uint16_t = libc::c_ushort;
++pub type __int32_t = libc::c_int;
++pub type __uint32_t = libc::c_uint;
++pub type __int64_t = libc::c_longlong;
++pub type __uint64_t = libc::c_ulonglong;
++pub type __size_t = __uint32_t;
++pub type size_t = __size_t;
++pub type __u16 = u16;
++pub type __s32 = i32;
++pub type __u32 = u32;
++pub type __s64 = i64;
++pub type __u64 = u64;
++pub type __kernel_size_t = size_t;
++pub type drm_handle_t = libc::c_ulong;
++pub type drm_context_t = libc::c_uint;
++pub type drm_drawable_t = libc::c_uint;
++pub type drm_magic_t = libc::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: libc::c_ushort,
++ pub y1: libc::c_ushort,
++ pub x2: libc::c_ushort,
++ pub y2: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: libc::c_uint,
++ pub rects: *mut drm_clip_rect,
++}
++impl Default for drm_drawable_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_tex_region {
++ pub next: libc::c_uchar,
++ pub prev: libc::c_uchar,
++ pub in_use: libc::c_uchar,
++ pub padding: libc::c_uchar,
++ pub age: libc::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: libc::c_uint,
++ pub padding: [libc::c_char; 60usize],
++}
++impl Default for drm_hw_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_version {
++ pub version_major: libc::c_int,
++ pub version_minor: libc::c_int,
++ pub version_patchlevel: libc::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut libc::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut libc::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut libc::c_char,
++}
++impl Default for drm_version {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_unique {
++ pub unique_len: __kernel_size_t,
++ pub unique: *mut libc::c_char,
++}
++impl Default for drm_unique {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_list {
++ pub count: libc::c_int,
++ pub version: *mut drm_version,
++}
++impl Default for drm_list {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_block {
++ pub unused: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_control {
++ pub func: drm_control__bindgen_ty_1::Type,
++ pub irq: libc::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const DRM_ADD_COMMAND: Type = 0;
++ pub const DRM_RM_COMMAND: Type = 1;
++ pub const DRM_INST_HANDLER: Type = 2;
++ pub const DRM_UNINST_HANDLER: Type = 3;
++}
++impl Default for drm_control {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_map_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_FRAME_BUFFER: Type = 0;
++ pub const _DRM_REGISTERS: Type = 1;
++ pub const _DRM_SHM: Type = 2;
++ pub const _DRM_AGP: Type = 3;
++ pub const _DRM_SCATTER_GATHER: Type = 4;
++ pub const _DRM_CONSISTENT: Type = 5;
++}
++pub mod drm_map_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_RESTRICTED: Type = 1;
++ pub const _DRM_READ_ONLY: Type = 2;
++ pub const _DRM_LOCKED: Type = 4;
++ pub const _DRM_KERNEL: Type = 8;
++ pub const _DRM_WRITE_COMBINING: Type = 16;
++ pub const _DRM_CONTAINS_LOCK: Type = 32;
++ pub const _DRM_REMOVABLE: Type = 64;
++ pub const _DRM_DRIVER: Type = 128;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_priv_map {
++ pub ctx_id: libc::c_uint,
++ pub handle: *mut libc::c_void,
++}
++impl Default for drm_ctx_priv_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_map {
++ pub offset: libc::c_ulong,
++ pub size: libc::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut libc::c_void,
++ pub mtrr: libc::c_int,
++}
++impl Default for drm_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_client {
++ pub idx: libc::c_int,
++ pub auth: libc::c_int,
++ pub pid: libc::c_ulong,
++ pub uid: libc::c_ulong,
++ pub magic: libc::c_ulong,
++ pub iocs: libc::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_STAT_LOCK: Type = 0;
++ pub const _DRM_STAT_OPENS: Type = 1;
++ pub const _DRM_STAT_CLOSES: Type = 2;
++ pub const _DRM_STAT_IOCTLS: Type = 3;
++ pub const _DRM_STAT_LOCKS: Type = 4;
++ pub const _DRM_STAT_UNLOCKS: Type = 5;
++ pub const _DRM_STAT_VALUE: Type = 6;
++ pub const _DRM_STAT_BYTE: Type = 7;
++ pub const _DRM_STAT_COUNT: Type = 8;
++ pub const _DRM_STAT_IRQ: Type = 9;
++ pub const _DRM_STAT_PRIMARY: Type = 10;
++ pub const _DRM_STAT_SECONDARY: Type = 11;
++ pub const _DRM_STAT_DMA: Type = 12;
++ pub const _DRM_STAT_SPECIAL: Type = 13;
++ pub const _DRM_STAT_MISSED: Type = 14;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats {
++ pub count: libc::c_ulong,
++ pub data: [drm_stats__bindgen_ty_1; 15usize],
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats__bindgen_ty_1 {
++ pub value: libc::c_ulong,
++ pub type_: drm_stat_type::Type,
++}
++impl Default for drm_stats__bindgen_ty_1 {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++impl Default for drm_stats {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_lock_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_LOCK_READY: Type = 1;
++ pub const _DRM_LOCK_QUIESCENT: Type = 2;
++ pub const _DRM_LOCK_FLUSH: Type = 4;
++ pub const _DRM_LOCK_FLUSH_ALL: Type = 8;
++ pub const _DRM_HALT_ALL_QUEUES: Type = 16;
++ pub const _DRM_HALT_CUR_QUEUES: Type = 32;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_lock {
++ pub context: libc::c_int,
++ pub flags: drm_lock_flags::Type,
++}
++impl Default for drm_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_dma_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_DMA_BLOCK: Type = 1;
++ pub const _DRM_DMA_WHILE_LOCKED: Type = 2;
++ pub const _DRM_DMA_PRIORITY: Type = 4;
++ pub const _DRM_DMA_WAIT: Type = 16;
++ pub const _DRM_DMA_SMALLER_OK: Type = 32;
++ pub const _DRM_DMA_LARGER_OK: Type = 64;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_desc {
++ pub count: libc::c_int,
++ pub size: libc::c_int,
++ pub low_mark: libc::c_int,
++ pub high_mark: libc::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: libc::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const _DRM_PAGE_ALIGN: Type = 1;
++ pub const _DRM_AGP_BUFFER: Type = 2;
++ pub const _DRM_SG_BUFFER: Type = 4;
++ pub const _DRM_FB_BUFFER: Type = 8;
++ pub const _DRM_PCI_BUFFER_RO: Type = 16;
++}
++impl Default for drm_buf_desc {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_info {
++ pub count: libc::c_int,
++ pub list: *mut drm_buf_desc,
++}
++impl Default for drm_buf_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_free {
++ pub count: libc::c_int,
++ pub list: *mut libc::c_int,
++}
++impl Default for drm_buf_free {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_pub {
++ pub idx: libc::c_int,
++ pub total: libc::c_int,
++ pub used: libc::c_int,
++ pub address: *mut libc::c_void,
++}
++impl Default for drm_buf_pub {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_map {
++ pub count: libc::c_int,
++ pub virtual_: *mut libc::c_void,
++ pub list: *mut drm_buf_pub,
++}
++impl Default for drm_buf_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_dma {
++ pub context: libc::c_int,
++ pub send_count: libc::c_int,
++ pub send_indices: *mut libc::c_int,
++ pub send_sizes: *mut libc::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: libc::c_int,
++ pub request_size: libc::c_int,
++ pub request_indices: *mut libc::c_int,
++ pub request_sizes: *mut libc::c_int,
++ pub granted_count: libc::c_int,
++}
++impl Default for drm_dma {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_ctx_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_CONTEXT_PRESERVED: Type = 1;
++ pub const _DRM_CONTEXT_2DONLY: Type = 2;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx {
++ pub handle: drm_context_t,
++ pub flags: drm_ctx_flags::Type,
++}
++impl Default for drm_ctx {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_res {
++ pub count: libc::c_int,
++ pub contexts: *mut drm_ctx,
++}
++impl Default for drm_ctx_res {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_draw {
++ pub handle: drm_drawable_t,
++}
++pub mod drm_drawable_info_type_t {
++ pub type Type = libc::c_uint;
++ pub const DRM_DRAWABLE_CLIPRECTS: Type = 0;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_update_draw {
++ pub handle: drm_drawable_t,
++ pub type_: libc::c_uint,
++ pub num: libc::c_uint,
++ pub data: libc::c_ulonglong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_auth {
++ pub magic: drm_magic_t,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_irq_busid {
++ pub irq: libc::c_int,
++ pub busnum: libc::c_int,
++ pub devnum: libc::c_int,
++ pub funcnum: libc::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_VBLANK_ABSOLUTE: Type = 0;
++ pub const _DRM_VBLANK_RELATIVE: Type = 1;
++ pub const _DRM_VBLANK_HIGH_CRTC_MASK: Type = 62;
++ pub const _DRM_VBLANK_EVENT: Type = 67108864;
++ pub const _DRM_VBLANK_FLIP: Type = 134217728;
++ pub const _DRM_VBLANK_NEXTONMISS: Type = 268435456;
++ pub const _DRM_VBLANK_SECONDARY: Type = 536870912;
++ pub const _DRM_VBLANK_SIGNAL: Type = 1073741824;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_request {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub signal: libc::c_ulong,
++}
++impl Default for drm_wait_vblank_request {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_reply {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub tval_sec: libc::c_long,
++ pub tval_usec: libc::c_long,
++}
++impl Default for drm_wait_vblank_reply {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Copy, Clone)]
++pub union drm_wait_vblank {
++ pub request: drm_wait_vblank_request,
++ pub reply: drm_wait_vblank_reply,
++}
++impl Default for drm_wait_vblank {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_modeset_ctl {
++ pub crtc: __u32,
++ pub cmd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_mode {
++ pub mode: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++ pub type_: libc::c_ulong,
++ pub physical: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: libc::c_ulong,
++ pub offset: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: libc::c_int,
++ pub agp_version_minor: libc::c_int,
++ pub mode: libc::c_ulong,
++ pub aperture_base: libc::c_ulong,
++ pub aperture_size: libc::c_ulong,
++ pub memory_allowed: libc::c_ulong,
++ pub memory_used: libc::c_ulong,
++ pub id_vendor: libc::c_ushort,
++ pub id_device: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: libc::c_int,
++ pub drm_di_minor: libc::c_int,
++ pub drm_dd_major: libc::c_int,
++ pub drm_dd_minor: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_close {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_flink {
++ pub handle: __u32,
++ pub name: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_open {
++ pub name: __u32,
++ pub handle: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_get_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_client_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_prime_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_create {
++ pub handle: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_destroy {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_transfer {
++ pub src_handle: __u32,
++ pub dst_handle: __u32,
++ pub src_point: __u64,
++ pub dst_point: __u64,
++ pub flags: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_wait {
++ pub handles: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_wait {
++ pub handles: __u64,
++ pub points: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_array {
++ pub handles: __u64,
++ pub count_handles: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_array {
++ pub handles: __u64,
++ pub points: __u64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_get_sequence {
++ pub crtc_id: __u32,
++ pub active: __u32,
++ pub sequence: __u64,
++ pub sequence_ns: __s64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_queue_sequence {
++ pub crtc_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_modeinfo {
++ pub clock: __u32,
++ pub hdisplay: __u16,
++ pub hsync_start: __u16,
++ pub hsync_end: __u16,
++ pub htotal: __u16,
++ pub hskew: __u16,
++ pub vdisplay: __u16,
++ pub vsync_start: __u16,
++ pub vsync_end: __u16,
++ pub vtotal: __u16,
++ pub vscan: __u16,
++ pub vrefresh: __u32,
++ pub flags: __u32,
++ pub type_: __u32,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_card_res {
++ pub fb_id_ptr: __u64,
++ pub crtc_id_ptr: __u64,
++ pub connector_id_ptr: __u64,
++ pub encoder_id_ptr: __u64,
++ pub count_fbs: __u32,
++ pub count_crtcs: __u32,
++ pub count_connectors: __u32,
++ pub count_encoders: __u32,
++ pub min_width: __u32,
++ pub max_width: __u32,
++ pub min_height: __u32,
++ pub max_height: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc {
++ pub set_connectors_ptr: __u64,
++ pub count_connectors: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub x: __u32,
++ pub y: __u32,
++ pub gamma_size: __u32,
++ pub mode_valid: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_set_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub crtc_x: __s32,
++ pub crtc_y: __s32,
++ pub crtc_w: __u32,
++ pub crtc_h: __u32,
++ pub src_x: __u32,
++ pub src_y: __u32,
++ pub src_h: __u32,
++ pub src_w: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub possible_crtcs: __u32,
++ pub gamma_size: __u32,
++ pub count_format_types: __u32,
++ pub format_type_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane_res {
++ pub plane_id_ptr: __u64,
++ pub count_planes: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_encoder {
++ pub encoder_id: __u32,
++ pub encoder_type: __u32,
++ pub crtc_id: __u32,
++ pub possible_crtcs: __u32,
++ pub possible_clones: __u32,
++}
++pub mod drm_mode_subconnector {
++ pub type Type = libc::c_uint;
++ pub const DRM_MODE_SUBCONNECTOR_Automatic: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_Unknown: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_VGA: Type = 1;
++ pub const DRM_MODE_SUBCONNECTOR_DVID: Type = 3;
++ pub const DRM_MODE_SUBCONNECTOR_DVIA: Type = 4;
++ pub const DRM_MODE_SUBCONNECTOR_Composite: Type = 5;
++ pub const DRM_MODE_SUBCONNECTOR_SVIDEO: Type = 6;
++ pub const DRM_MODE_SUBCONNECTOR_Component: Type = 8;
++ pub const DRM_MODE_SUBCONNECTOR_SCART: Type = 9;
++ pub const DRM_MODE_SUBCONNECTOR_DisplayPort: Type = 10;
++ pub const DRM_MODE_SUBCONNECTOR_HDMIA: Type = 11;
++ pub const DRM_MODE_SUBCONNECTOR_Native: Type = 15;
++ pub const DRM_MODE_SUBCONNECTOR_Wireless: Type = 18;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_connector {
++ pub encoders_ptr: __u64,
++ pub modes_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_modes: __u32,
++ pub count_props: __u32,
++ pub count_encoders: __u32,
++ pub encoder_id: __u32,
++ pub connector_id: __u32,
++ pub connector_type: __u32,
++ pub connector_type_id: __u32,
++ pub connection: __u32,
++ pub mm_width: __u32,
++ pub mm_height: __u32,
++ pub subpixel: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_property_enum {
++ pub value: __u64,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_property {
++ pub values_ptr: __u64,
++ pub enum_blob_ptr: __u64,
++ pub prop_id: __u32,
++ pub flags: __u32,
++ pub name: [libc::c_char; 32usize],
++ pub count_values: __u32,
++ pub count_enum_blobs: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_connector_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub connector_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_get_properties {
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_props: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_blob {
++ pub blob_id: __u32,
++ pub length: __u32,
++ pub data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pitch: __u32,
++ pub bpp: __u32,
++ pub depth: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd2 {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pixel_format: __u32,
++ pub flags: __u32,
++ pub handles: [__u32; 4usize],
++ pub pitches: [__u32; 4usize],
++ pub offsets: [__u32; 4usize],
++ pub modifier: [__u64; 4usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_dirty_cmd {
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub color: __u32,
++ pub num_clips: __u32,
++ pub clips_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_mode_cmd {
++ pub connector_id: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor2 {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++ pub hot_x: __s32,
++ pub hot_y: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_lut {
++ pub crtc_id: __u32,
++ pub gamma_size: __u32,
++ pub red: __u64,
++ pub green: __u64,
++ pub blue: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_ctm {
++ pub matrix: [__u64; 9usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_lut {
++ pub red: __u16,
++ pub green: __u16,
++ pub blue: __u16,
++ pub reserved: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct hdr_metadata_infoframe__bindgen_ty_1 {
++ pub x: __u16,
++ pub y: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub reserved: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip_target {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_dumb {
++ pub height: __u32,
++ pub width: __u32,
++ pub bpp: __u32,
++ pub flags: __u32,
++ pub handle: __u32,
++ pub pitch: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_map_dumb {
++ pub handle: __u32,
++ pub pad: __u32,
++ pub offset: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_dumb {
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_atomic {
++ pub flags: __u32,
++ pub count_objs: __u32,
++ pub objs_ptr: __u64,
++ pub count_props_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub reserved: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier_blob {
++ pub version: __u32,
++ pub flags: __u32,
++ pub count_formats: __u32,
++ pub formats_offset: __u32,
++ pub count_modifiers: __u32,
++ pub modifiers_offset: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier {
++ pub formats: __u64,
++ pub offset: __u32,
++ pub pad: __u32,
++ pub modifier: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_blob {
++ pub data: __u64,
++ pub length: __u32,
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_blob {
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_lease {
++ pub object_ids: __u64,
++ pub object_count: __u32,
++ pub flags: __u32,
++ pub lessee_id: __u32,
++ pub fd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_list_lessees {
++ pub count_lessees: __u32,
++ pub pad: __u32,
++ pub lessees_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_lease {
++ pub count_objects: __u32,
++ pub pad: __u32,
++ pub objects_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_revoke_lease {
++ pub lessee_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_rect {
++ pub x1: __s32,
++ pub y1: __s32,
++ pub x2: __s32,
++ pub y2: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event {
++ pub type_: __u32,
++ pub length: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_vblank {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub tv_sec: __u32,
++ pub tv_usec: __u32,
++ pub sequence: __u32,
++ pub crtc_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_crtc_sequence {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub time_ns: __s64,
++ pub sequence: __u64,
++}
++pub type drm_clip_rect_t = drm_clip_rect;
++pub type drm_drawable_info_t = drm_drawable_info;
++pub type drm_tex_region_t = drm_tex_region;
++pub type drm_hw_lock_t = drm_hw_lock;
++pub type drm_version_t = drm_version;
++pub type drm_unique_t = drm_unique;
++pub type drm_list_t = drm_list;
++pub type drm_block_t = drm_block;
++pub type drm_control_t = drm_control;
++pub use self::drm_map_flags::Type as drm_map_flags_t;
++pub use self::drm_map_type::Type as drm_map_type_t;
++pub type drm_ctx_priv_map_t = drm_ctx_priv_map;
++pub type drm_map_t = drm_map;
++pub type drm_client_t = drm_client;
++pub use self::drm_stat_type::Type as drm_stat_type_t;
++pub type drm_stats_t = drm_stats;
++pub use self::drm_lock_flags::Type as drm_lock_flags_t;
++pub type drm_lock_t = drm_lock;
++pub use self::drm_dma_flags::Type as drm_dma_flags_t;
++pub type drm_buf_desc_t = drm_buf_desc;
++pub type drm_buf_info_t = drm_buf_info;
++pub type drm_buf_free_t = drm_buf_free;
++pub type drm_buf_pub_t = drm_buf_pub;
++pub type drm_buf_map_t = drm_buf_map;
++pub type drm_dma_t = drm_dma;
++pub type drm_wait_vblank_t = drm_wait_vblank;
++pub type drm_agp_mode_t = drm_agp_mode;
++pub use self::drm_ctx_flags::Type as drm_ctx_flags_t;
++pub type drm_ctx_t = drm_ctx;
++pub type drm_ctx_res_t = drm_ctx_res;
++pub type drm_draw_t = drm_draw;
++pub type drm_update_draw_t = drm_update_draw;
++pub type drm_auth_t = drm_auth;
++pub type drm_irq_busid_t = drm_irq_busid;
++pub use self::drm_vblank_seq_type::Type as drm_vblank_seq_type_t;
++pub type drm_agp_buffer_t = drm_agp_buffer;
++pub type drm_agp_binding_t = drm_agp_binding;
++pub type drm_agp_info_t = drm_agp_info;
++pub type drm_scatter_gather_t = drm_scatter_gather;
++pub type drm_set_version_t = drm_set_version;
++pub const DRM_MODE_PROP_SIGNED_RANGE: libc::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: libc::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.4.0/src/platforms/freebsd/powerpc/bindings.rs
+@@ -0,0 +1,1342 @@
++/* automatically generated by rust-bindgen 0.59.2 */
++
++pub const DRM_NAME: &[u8; 4usize] = b"drm\0";
++pub const DRM_MIN_ORDER: u32 = 5;
++pub const DRM_MAX_ORDER: u32 = 22;
++pub const DRM_RAM_PERCENT: u32 = 10;
++pub const _DRM_LOCK_HELD: u32 = 2147483648;
++pub const _DRM_LOCK_CONT: u32 = 1073741824;
++pub const _DRM_VBLANK_HIGH_CRTC_SHIFT: u32 = 1;
++pub const _DRM_PRE_MODESET: u32 = 1;
++pub const _DRM_POST_MODESET: u32 = 2;
++pub const DRM_CAP_DUMB_BUFFER: u32 = 1;
++pub const DRM_CAP_VBLANK_HIGH_CRTC: u32 = 2;
++pub const DRM_CAP_DUMB_PREFERRED_DEPTH: u32 = 3;
++pub const DRM_CAP_DUMB_PREFER_SHADOW: u32 = 4;
++pub const DRM_CAP_PRIME: u32 = 5;
++pub const DRM_PRIME_CAP_IMPORT: u32 = 1;
++pub const DRM_PRIME_CAP_EXPORT: u32 = 2;
++pub const DRM_CAP_TIMESTAMP_MONOTONIC: u32 = 6;
++pub const DRM_CAP_ASYNC_PAGE_FLIP: u32 = 7;
++pub const DRM_CAP_CURSOR_WIDTH: u32 = 8;
++pub const DRM_CAP_CURSOR_HEIGHT: u32 = 9;
++pub const DRM_CAP_ADDFB2_MODIFIERS: u32 = 16;
++pub const DRM_CAP_PAGE_FLIP_TARGET: u32 = 17;
++pub const DRM_CAP_CRTC_IN_VBLANK_EVENT: u32 = 18;
++pub const DRM_CAP_SYNCOBJ: u32 = 19;
++pub const DRM_CAP_SYNCOBJ_TIMELINE: u32 = 20;
++pub const DRM_CLIENT_CAP_STEREO_3D: u32 = 1;
++pub const DRM_CLIENT_CAP_UNIVERSAL_PLANES: u32 = 2;
++pub const DRM_CLIENT_CAP_ATOMIC: u32 = 3;
++pub const DRM_CLIENT_CAP_ASPECT_RATIO: u32 = 4;
++pub const DRM_CLIENT_CAP_WRITEBACK_CONNECTORS: u32 = 5;
++pub const DRM_SYNCOBJ_CREATE_SIGNALED: u32 = 1;
++pub const DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT: u32 = 2;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE: u32 = 4;
++pub const DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_RELATIVE: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_NEXT_ON_MISS: u32 = 2;
++pub const DRM_CONNECTOR_NAME_LEN: u32 = 32;
++pub const DRM_DISPLAY_MODE_LEN: u32 = 32;
++pub const DRM_PROP_NAME_LEN: u32 = 32;
++pub const DRM_MODE_TYPE_BUILTIN: u32 = 1;
++pub const DRM_MODE_TYPE_CLOCK_C: u32 = 3;
++pub const DRM_MODE_TYPE_CRTC_C: u32 = 5;
++pub const DRM_MODE_TYPE_PREFERRED: u32 = 8;
++pub const DRM_MODE_TYPE_DEFAULT: u32 = 16;
++pub const DRM_MODE_TYPE_USERDEF: u32 = 32;
++pub const DRM_MODE_TYPE_DRIVER: u32 = 64;
++pub const DRM_MODE_TYPE_ALL: u32 = 104;
++pub const DRM_MODE_FLAG_PHSYNC: u32 = 1;
++pub const DRM_MODE_FLAG_NHSYNC: u32 = 2;
++pub const DRM_MODE_FLAG_PVSYNC: u32 = 4;
++pub const DRM_MODE_FLAG_NVSYNC: u32 = 8;
++pub const DRM_MODE_FLAG_INTERLACE: u32 = 16;
++pub const DRM_MODE_FLAG_DBLSCAN: u32 = 32;
++pub const DRM_MODE_FLAG_CSYNC: u32 = 64;
++pub const DRM_MODE_FLAG_PCSYNC: u32 = 128;
++pub const DRM_MODE_FLAG_NCSYNC: u32 = 256;
++pub const DRM_MODE_FLAG_HSKEW: u32 = 512;
++pub const DRM_MODE_FLAG_BCAST: u32 = 1024;
++pub const DRM_MODE_FLAG_PIXMUX: u32 = 2048;
++pub const DRM_MODE_FLAG_DBLCLK: u32 = 4096;
++pub const DRM_MODE_FLAG_CLKDIV2: u32 = 8192;
++pub const DRM_MODE_FLAG_3D_MASK: u32 = 507904;
++pub const DRM_MODE_FLAG_3D_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_3D_FRAME_PACKING: u32 = 16384;
++pub const DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE: u32 = 32768;
++pub const DRM_MODE_FLAG_3D_LINE_ALTERNATIVE: u32 = 49152;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL: u32 = 65536;
++pub const DRM_MODE_FLAG_3D_L_DEPTH: u32 = 81920;
++pub const DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH: u32 = 98304;
++pub const DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: u32 = 114688;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: u32 = 131072;
++pub const DRM_MODE_PICTURE_ASPECT_NONE: u32 = 0;
++pub const DRM_MODE_PICTURE_ASPECT_4_3: u32 = 1;
++pub const DRM_MODE_PICTURE_ASPECT_16_9: u32 = 2;
++pub const DRM_MODE_PICTURE_ASPECT_64_27: u32 = 3;
++pub const DRM_MODE_PICTURE_ASPECT_256_135: u32 = 4;
++pub const DRM_MODE_CONTENT_TYPE_NO_DATA: u32 = 0;
++pub const DRM_MODE_CONTENT_TYPE_GRAPHICS: u32 = 1;
++pub const DRM_MODE_CONTENT_TYPE_PHOTO: u32 = 2;
++pub const DRM_MODE_CONTENT_TYPE_CINEMA: u32 = 3;
++pub const DRM_MODE_CONTENT_TYPE_GAME: u32 = 4;
++pub const DRM_MODE_FLAG_PIC_AR_MASK: u32 = 7864320;
++pub const DRM_MODE_FLAG_PIC_AR_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_PIC_AR_4_3: u32 = 524288;
++pub const DRM_MODE_FLAG_PIC_AR_16_9: u32 = 1048576;
++pub const DRM_MODE_FLAG_PIC_AR_64_27: u32 = 1572864;
++pub const DRM_MODE_FLAG_PIC_AR_256_135: u32 = 2097152;
++pub const DRM_MODE_FLAG_ALL: u32 = 521215;
++pub const DRM_MODE_DPMS_ON: u32 = 0;
++pub const DRM_MODE_DPMS_STANDBY: u32 = 1;
++pub const DRM_MODE_DPMS_SUSPEND: u32 = 2;
++pub const DRM_MODE_DPMS_OFF: u32 = 3;
++pub const DRM_MODE_SCALE_NONE: u32 = 0;
++pub const DRM_MODE_SCALE_FULLSCREEN: u32 = 1;
++pub const DRM_MODE_SCALE_CENTER: u32 = 2;
++pub const DRM_MODE_SCALE_ASPECT: u32 = 3;
++pub const DRM_MODE_DITHERING_OFF: u32 = 0;
++pub const DRM_MODE_DITHERING_ON: u32 = 1;
++pub const DRM_MODE_DITHERING_AUTO: u32 = 2;
++pub const DRM_MODE_DIRTY_OFF: u32 = 0;
++pub const DRM_MODE_DIRTY_ON: u32 = 1;
++pub const DRM_MODE_DIRTY_ANNOTATE: u32 = 2;
++pub const DRM_MODE_LINK_STATUS_GOOD: u32 = 0;
++pub const DRM_MODE_LINK_STATUS_BAD: u32 = 1;
++pub const DRM_MODE_ROTATE_0: u32 = 1;
++pub const DRM_MODE_ROTATE_90: u32 = 2;
++pub const DRM_MODE_ROTATE_180: u32 = 4;
++pub const DRM_MODE_ROTATE_270: u32 = 8;
++pub const DRM_MODE_ROTATE_MASK: u32 = 15;
++pub const DRM_MODE_REFLECT_X: u32 = 16;
++pub const DRM_MODE_REFLECT_Y: u32 = 32;
++pub const DRM_MODE_REFLECT_MASK: u32 = 48;
++pub const DRM_MODE_CONTENT_PROTECTION_UNDESIRED: u32 = 0;
++pub const DRM_MODE_CONTENT_PROTECTION_DESIRED: u32 = 1;
++pub const DRM_MODE_CONTENT_PROTECTION_ENABLED: u32 = 2;
++pub const DRM_MODE_PRESENT_TOP_FIELD: u32 = 1;
++pub const DRM_MODE_PRESENT_BOTTOM_FIELD: u32 = 2;
++pub const DRM_MODE_ENCODER_NONE: u32 = 0;
++pub const DRM_MODE_ENCODER_DAC: u32 = 1;
++pub const DRM_MODE_ENCODER_TMDS: u32 = 2;
++pub const DRM_MODE_ENCODER_LVDS: u32 = 3;
++pub const DRM_MODE_ENCODER_TVDAC: u32 = 4;
++pub const DRM_MODE_ENCODER_VIRTUAL: u32 = 5;
++pub const DRM_MODE_ENCODER_DSI: u32 = 6;
++pub const DRM_MODE_ENCODER_DPMST: u32 = 7;
++pub const DRM_MODE_ENCODER_DPI: u32 = 8;
++pub const DRM_MODE_CONNECTOR_Unknown: u32 = 0;
++pub const DRM_MODE_CONNECTOR_VGA: u32 = 1;
++pub const DRM_MODE_CONNECTOR_DVII: u32 = 2;
++pub const DRM_MODE_CONNECTOR_DVID: u32 = 3;
++pub const DRM_MODE_CONNECTOR_DVIA: u32 = 4;
++pub const DRM_MODE_CONNECTOR_Composite: u32 = 5;
++pub const DRM_MODE_CONNECTOR_SVIDEO: u32 = 6;
++pub const DRM_MODE_CONNECTOR_LVDS: u32 = 7;
++pub const DRM_MODE_CONNECTOR_Component: u32 = 8;
++pub const DRM_MODE_CONNECTOR_9PinDIN: u32 = 9;
++pub const DRM_MODE_CONNECTOR_DisplayPort: u32 = 10;
++pub const DRM_MODE_CONNECTOR_HDMIA: u32 = 11;
++pub const DRM_MODE_CONNECTOR_HDMIB: u32 = 12;
++pub const DRM_MODE_CONNECTOR_TV: u32 = 13;
++pub const DRM_MODE_CONNECTOR_eDP: u32 = 14;
++pub const DRM_MODE_CONNECTOR_VIRTUAL: u32 = 15;
++pub const DRM_MODE_CONNECTOR_DSI: u32 = 16;
++pub const DRM_MODE_CONNECTOR_DPI: u32 = 17;
++pub const DRM_MODE_CONNECTOR_WRITEBACK: u32 = 18;
++pub const DRM_MODE_CONNECTOR_SPI: u32 = 19;
++pub const DRM_MODE_CONNECTOR_USB: u32 = 20;
++pub const DRM_MODE_PROP_PENDING: u32 = 1;
++pub const DRM_MODE_PROP_RANGE: u32 = 2;
++pub const DRM_MODE_PROP_IMMUTABLE: u32 = 4;
++pub const DRM_MODE_PROP_ENUM: u32 = 8;
++pub const DRM_MODE_PROP_BLOB: u32 = 16;
++pub const DRM_MODE_PROP_BITMASK: u32 = 32;
++pub const DRM_MODE_PROP_LEGACY_TYPE: u32 = 58;
++pub const DRM_MODE_PROP_EXTENDED_TYPE: u32 = 65472;
++pub const DRM_MODE_PROP_ATOMIC: u32 = 2147483648;
++pub const DRM_MODE_OBJECT_CRTC: u32 = 3435973836;
++pub const DRM_MODE_OBJECT_CONNECTOR: u32 = 3233857728;
++pub const DRM_MODE_OBJECT_ENCODER: u32 = 3772834016;
++pub const DRM_MODE_OBJECT_MODE: u32 = 3739147998;
++pub const DRM_MODE_OBJECT_PROPERTY: u32 = 2964369584;
++pub const DRM_MODE_OBJECT_FB: u32 = 4227595259;
++pub const DRM_MODE_OBJECT_BLOB: u32 = 3149642683;
++pub const DRM_MODE_OBJECT_PLANE: u32 = 4008636142;
++pub const DRM_MODE_OBJECT_ANY: u32 = 0;
++pub const DRM_MODE_FB_INTERLACED: u32 = 1;
++pub const DRM_MODE_FB_MODIFIERS: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_COPY: u32 = 1;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_FILL: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_FLAGS: u32 = 3;
++pub const DRM_MODE_FB_DIRTY_MAX_CLIPS: u32 = 256;
++pub const DRM_MODE_CURSOR_BO: u32 = 1;
++pub const DRM_MODE_CURSOR_MOVE: u32 = 2;
++pub const DRM_MODE_CURSOR_FLAGS: u32 = 3;
++pub const DRM_MODE_PAGE_FLIP_EVENT: u32 = 1;
++pub const DRM_MODE_PAGE_FLIP_ASYNC: u32 = 2;
++pub const DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE: u32 = 4;
++pub const DRM_MODE_PAGE_FLIP_TARGET_RELATIVE: u32 = 8;
++pub const DRM_MODE_PAGE_FLIP_TARGET: u32 = 12;
++pub const DRM_MODE_PAGE_FLIP_FLAGS: u32 = 15;
++pub const DRM_MODE_ATOMIC_TEST_ONLY: u32 = 256;
++pub const DRM_MODE_ATOMIC_NONBLOCK: u32 = 512;
++pub const DRM_MODE_ATOMIC_ALLOW_MODESET: u32 = 1024;
++pub const DRM_MODE_ATOMIC_FLAGS: u32 = 1795;
++pub const DRM_IOCTL_BASE: u8 = 100u8;
++pub const DRM_COMMAND_BASE: u32 = 64;
++pub const DRM_COMMAND_END: u32 = 160;
++pub const DRM_EVENT_VBLANK: u32 = 1;
++pub const DRM_EVENT_FLIP_COMPLETE: u32 = 2;
++pub const DRM_EVENT_CRTC_SEQUENCE: u32 = 3;
++pub type __uint16_t = libc::c_ushort;
++pub type __int32_t = libc::c_int;
++pub type __uint32_t = libc::c_uint;
++pub type __int64_t = libc::c_longlong;
++pub type __uint64_t = libc::c_ulonglong;
++pub type __size_t = __uint32_t;
++pub type size_t = __size_t;
++pub type __u16 = u16;
++pub type __s32 = i32;
++pub type __u32 = u32;
++pub type __s64 = i64;
++pub type __u64 = u64;
++pub type __kernel_size_t = size_t;
++pub type drm_handle_t = libc::c_ulong;
++pub type drm_context_t = libc::c_uint;
++pub type drm_drawable_t = libc::c_uint;
++pub type drm_magic_t = libc::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: libc::c_ushort,
++ pub y1: libc::c_ushort,
++ pub x2: libc::c_ushort,
++ pub y2: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: libc::c_uint,
++ pub rects: *mut drm_clip_rect,
++}
++impl Default for drm_drawable_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_tex_region {
++ pub next: libc::c_uchar,
++ pub prev: libc::c_uchar,
++ pub in_use: libc::c_uchar,
++ pub padding: libc::c_uchar,
++ pub age: libc::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: libc::c_uint,
++ pub padding: [libc::c_char; 60usize],
++}
++impl Default for drm_hw_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_version {
++ pub version_major: libc::c_int,
++ pub version_minor: libc::c_int,
++ pub version_patchlevel: libc::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut libc::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut libc::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut libc::c_char,
++}
++impl Default for drm_version {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_unique {
++ pub unique_len: __kernel_size_t,
++ pub unique: *mut libc::c_char,
++}
++impl Default for drm_unique {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_list {
++ pub count: libc::c_int,
++ pub version: *mut drm_version,
++}
++impl Default for drm_list {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_block {
++ pub unused: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_control {
++ pub func: drm_control__bindgen_ty_1::Type,
++ pub irq: libc::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const DRM_ADD_COMMAND: Type = 0;
++ pub const DRM_RM_COMMAND: Type = 1;
++ pub const DRM_INST_HANDLER: Type = 2;
++ pub const DRM_UNINST_HANDLER: Type = 3;
++}
++impl Default for drm_control {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_map_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_FRAME_BUFFER: Type = 0;
++ pub const _DRM_REGISTERS: Type = 1;
++ pub const _DRM_SHM: Type = 2;
++ pub const _DRM_AGP: Type = 3;
++ pub const _DRM_SCATTER_GATHER: Type = 4;
++ pub const _DRM_CONSISTENT: Type = 5;
++}
++pub mod drm_map_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_RESTRICTED: Type = 1;
++ pub const _DRM_READ_ONLY: Type = 2;
++ pub const _DRM_LOCKED: Type = 4;
++ pub const _DRM_KERNEL: Type = 8;
++ pub const _DRM_WRITE_COMBINING: Type = 16;
++ pub const _DRM_CONTAINS_LOCK: Type = 32;
++ pub const _DRM_REMOVABLE: Type = 64;
++ pub const _DRM_DRIVER: Type = 128;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_priv_map {
++ pub ctx_id: libc::c_uint,
++ pub handle: *mut libc::c_void,
++}
++impl Default for drm_ctx_priv_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_map {
++ pub offset: libc::c_ulong,
++ pub size: libc::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut libc::c_void,
++ pub mtrr: libc::c_int,
++}
++impl Default for drm_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_client {
++ pub idx: libc::c_int,
++ pub auth: libc::c_int,
++ pub pid: libc::c_ulong,
++ pub uid: libc::c_ulong,
++ pub magic: libc::c_ulong,
++ pub iocs: libc::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_STAT_LOCK: Type = 0;
++ pub const _DRM_STAT_OPENS: Type = 1;
++ pub const _DRM_STAT_CLOSES: Type = 2;
++ pub const _DRM_STAT_IOCTLS: Type = 3;
++ pub const _DRM_STAT_LOCKS: Type = 4;
++ pub const _DRM_STAT_UNLOCKS: Type = 5;
++ pub const _DRM_STAT_VALUE: Type = 6;
++ pub const _DRM_STAT_BYTE: Type = 7;
++ pub const _DRM_STAT_COUNT: Type = 8;
++ pub const _DRM_STAT_IRQ: Type = 9;
++ pub const _DRM_STAT_PRIMARY: Type = 10;
++ pub const _DRM_STAT_SECONDARY: Type = 11;
++ pub const _DRM_STAT_DMA: Type = 12;
++ pub const _DRM_STAT_SPECIAL: Type = 13;
++ pub const _DRM_STAT_MISSED: Type = 14;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats {
++ pub count: libc::c_ulong,
++ pub data: [drm_stats__bindgen_ty_1; 15usize],
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats__bindgen_ty_1 {
++ pub value: libc::c_ulong,
++ pub type_: drm_stat_type::Type,
++}
++impl Default for drm_stats__bindgen_ty_1 {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++impl Default for drm_stats {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_lock_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_LOCK_READY: Type = 1;
++ pub const _DRM_LOCK_QUIESCENT: Type = 2;
++ pub const _DRM_LOCK_FLUSH: Type = 4;
++ pub const _DRM_LOCK_FLUSH_ALL: Type = 8;
++ pub const _DRM_HALT_ALL_QUEUES: Type = 16;
++ pub const _DRM_HALT_CUR_QUEUES: Type = 32;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_lock {
++ pub context: libc::c_int,
++ pub flags: drm_lock_flags::Type,
++}
++impl Default for drm_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_dma_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_DMA_BLOCK: Type = 1;
++ pub const _DRM_DMA_WHILE_LOCKED: Type = 2;
++ pub const _DRM_DMA_PRIORITY: Type = 4;
++ pub const _DRM_DMA_WAIT: Type = 16;
++ pub const _DRM_DMA_SMALLER_OK: Type = 32;
++ pub const _DRM_DMA_LARGER_OK: Type = 64;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_desc {
++ pub count: libc::c_int,
++ pub size: libc::c_int,
++ pub low_mark: libc::c_int,
++ pub high_mark: libc::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: libc::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const _DRM_PAGE_ALIGN: Type = 1;
++ pub const _DRM_AGP_BUFFER: Type = 2;
++ pub const _DRM_SG_BUFFER: Type = 4;
++ pub const _DRM_FB_BUFFER: Type = 8;
++ pub const _DRM_PCI_BUFFER_RO: Type = 16;
++}
++impl Default for drm_buf_desc {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_info {
++ pub count: libc::c_int,
++ pub list: *mut drm_buf_desc,
++}
++impl Default for drm_buf_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_free {
++ pub count: libc::c_int,
++ pub list: *mut libc::c_int,
++}
++impl Default for drm_buf_free {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_pub {
++ pub idx: libc::c_int,
++ pub total: libc::c_int,
++ pub used: libc::c_int,
++ pub address: *mut libc::c_void,
++}
++impl Default for drm_buf_pub {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_map {
++ pub count: libc::c_int,
++ pub virtual_: *mut libc::c_void,
++ pub list: *mut drm_buf_pub,
++}
++impl Default for drm_buf_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_dma {
++ pub context: libc::c_int,
++ pub send_count: libc::c_int,
++ pub send_indices: *mut libc::c_int,
++ pub send_sizes: *mut libc::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: libc::c_int,
++ pub request_size: libc::c_int,
++ pub request_indices: *mut libc::c_int,
++ pub request_sizes: *mut libc::c_int,
++ pub granted_count: libc::c_int,
++}
++impl Default for drm_dma {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_ctx_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_CONTEXT_PRESERVED: Type = 1;
++ pub const _DRM_CONTEXT_2DONLY: Type = 2;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx {
++ pub handle: drm_context_t,
++ pub flags: drm_ctx_flags::Type,
++}
++impl Default for drm_ctx {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_res {
++ pub count: libc::c_int,
++ pub contexts: *mut drm_ctx,
++}
++impl Default for drm_ctx_res {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_draw {
++ pub handle: drm_drawable_t,
++}
++pub mod drm_drawable_info_type_t {
++ pub type Type = libc::c_uint;
++ pub const DRM_DRAWABLE_CLIPRECTS: Type = 0;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_update_draw {
++ pub handle: drm_drawable_t,
++ pub type_: libc::c_uint,
++ pub num: libc::c_uint,
++ pub data: libc::c_ulonglong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_auth {
++ pub magic: drm_magic_t,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_irq_busid {
++ pub irq: libc::c_int,
++ pub busnum: libc::c_int,
++ pub devnum: libc::c_int,
++ pub funcnum: libc::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_VBLANK_ABSOLUTE: Type = 0;
++ pub const _DRM_VBLANK_RELATIVE: Type = 1;
++ pub const _DRM_VBLANK_HIGH_CRTC_MASK: Type = 62;
++ pub const _DRM_VBLANK_EVENT: Type = 67108864;
++ pub const _DRM_VBLANK_FLIP: Type = 134217728;
++ pub const _DRM_VBLANK_NEXTONMISS: Type = 268435456;
++ pub const _DRM_VBLANK_SECONDARY: Type = 536870912;
++ pub const _DRM_VBLANK_SIGNAL: Type = 1073741824;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_request {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub signal: libc::c_ulong,
++}
++impl Default for drm_wait_vblank_request {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_reply {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub tval_sec: libc::c_long,
++ pub tval_usec: libc::c_long,
++}
++impl Default for drm_wait_vblank_reply {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Copy, Clone)]
++pub union drm_wait_vblank {
++ pub request: drm_wait_vblank_request,
++ pub reply: drm_wait_vblank_reply,
++}
++impl Default for drm_wait_vblank {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_modeset_ctl {
++ pub crtc: __u32,
++ pub cmd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_mode {
++ pub mode: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++ pub type_: libc::c_ulong,
++ pub physical: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: libc::c_ulong,
++ pub offset: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: libc::c_int,
++ pub agp_version_minor: libc::c_int,
++ pub mode: libc::c_ulong,
++ pub aperture_base: libc::c_ulong,
++ pub aperture_size: libc::c_ulong,
++ pub memory_allowed: libc::c_ulong,
++ pub memory_used: libc::c_ulong,
++ pub id_vendor: libc::c_ushort,
++ pub id_device: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: libc::c_int,
++ pub drm_di_minor: libc::c_int,
++ pub drm_dd_major: libc::c_int,
++ pub drm_dd_minor: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_close {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_flink {
++ pub handle: __u32,
++ pub name: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_open {
++ pub name: __u32,
++ pub handle: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_get_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_client_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_prime_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_create {
++ pub handle: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_destroy {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_transfer {
++ pub src_handle: __u32,
++ pub dst_handle: __u32,
++ pub src_point: __u64,
++ pub dst_point: __u64,
++ pub flags: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_wait {
++ pub handles: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_wait {
++ pub handles: __u64,
++ pub points: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_array {
++ pub handles: __u64,
++ pub count_handles: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_array {
++ pub handles: __u64,
++ pub points: __u64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_get_sequence {
++ pub crtc_id: __u32,
++ pub active: __u32,
++ pub sequence: __u64,
++ pub sequence_ns: __s64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_queue_sequence {
++ pub crtc_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_modeinfo {
++ pub clock: __u32,
++ pub hdisplay: __u16,
++ pub hsync_start: __u16,
++ pub hsync_end: __u16,
++ pub htotal: __u16,
++ pub hskew: __u16,
++ pub vdisplay: __u16,
++ pub vsync_start: __u16,
++ pub vsync_end: __u16,
++ pub vtotal: __u16,
++ pub vscan: __u16,
++ pub vrefresh: __u32,
++ pub flags: __u32,
++ pub type_: __u32,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_card_res {
++ pub fb_id_ptr: __u64,
++ pub crtc_id_ptr: __u64,
++ pub connector_id_ptr: __u64,
++ pub encoder_id_ptr: __u64,
++ pub count_fbs: __u32,
++ pub count_crtcs: __u32,
++ pub count_connectors: __u32,
++ pub count_encoders: __u32,
++ pub min_width: __u32,
++ pub max_width: __u32,
++ pub min_height: __u32,
++ pub max_height: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc {
++ pub set_connectors_ptr: __u64,
++ pub count_connectors: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub x: __u32,
++ pub y: __u32,
++ pub gamma_size: __u32,
++ pub mode_valid: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_set_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub crtc_x: __s32,
++ pub crtc_y: __s32,
++ pub crtc_w: __u32,
++ pub crtc_h: __u32,
++ pub src_x: __u32,
++ pub src_y: __u32,
++ pub src_h: __u32,
++ pub src_w: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub possible_crtcs: __u32,
++ pub gamma_size: __u32,
++ pub count_format_types: __u32,
++ pub format_type_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane_res {
++ pub plane_id_ptr: __u64,
++ pub count_planes: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_encoder {
++ pub encoder_id: __u32,
++ pub encoder_type: __u32,
++ pub crtc_id: __u32,
++ pub possible_crtcs: __u32,
++ pub possible_clones: __u32,
++}
++pub mod drm_mode_subconnector {
++ pub type Type = libc::c_uint;
++ pub const DRM_MODE_SUBCONNECTOR_Automatic: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_Unknown: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_VGA: Type = 1;
++ pub const DRM_MODE_SUBCONNECTOR_DVID: Type = 3;
++ pub const DRM_MODE_SUBCONNECTOR_DVIA: Type = 4;
++ pub const DRM_MODE_SUBCONNECTOR_Composite: Type = 5;
++ pub const DRM_MODE_SUBCONNECTOR_SVIDEO: Type = 6;
++ pub const DRM_MODE_SUBCONNECTOR_Component: Type = 8;
++ pub const DRM_MODE_SUBCONNECTOR_SCART: Type = 9;
++ pub const DRM_MODE_SUBCONNECTOR_DisplayPort: Type = 10;
++ pub const DRM_MODE_SUBCONNECTOR_HDMIA: Type = 11;
++ pub const DRM_MODE_SUBCONNECTOR_Native: Type = 15;
++ pub const DRM_MODE_SUBCONNECTOR_Wireless: Type = 18;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_connector {
++ pub encoders_ptr: __u64,
++ pub modes_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_modes: __u32,
++ pub count_props: __u32,
++ pub count_encoders: __u32,
++ pub encoder_id: __u32,
++ pub connector_id: __u32,
++ pub connector_type: __u32,
++ pub connector_type_id: __u32,
++ pub connection: __u32,
++ pub mm_width: __u32,
++ pub mm_height: __u32,
++ pub subpixel: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_property_enum {
++ pub value: __u64,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_property {
++ pub values_ptr: __u64,
++ pub enum_blob_ptr: __u64,
++ pub prop_id: __u32,
++ pub flags: __u32,
++ pub name: [libc::c_char; 32usize],
++ pub count_values: __u32,
++ pub count_enum_blobs: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_connector_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub connector_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_get_properties {
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_props: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_blob {
++ pub blob_id: __u32,
++ pub length: __u32,
++ pub data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pitch: __u32,
++ pub bpp: __u32,
++ pub depth: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd2 {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pixel_format: __u32,
++ pub flags: __u32,
++ pub handles: [__u32; 4usize],
++ pub pitches: [__u32; 4usize],
++ pub offsets: [__u32; 4usize],
++ pub modifier: [__u64; 4usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_dirty_cmd {
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub color: __u32,
++ pub num_clips: __u32,
++ pub clips_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_mode_cmd {
++ pub connector_id: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor2 {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++ pub hot_x: __s32,
++ pub hot_y: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_lut {
++ pub crtc_id: __u32,
++ pub gamma_size: __u32,
++ pub red: __u64,
++ pub green: __u64,
++ pub blue: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_ctm {
++ pub matrix: [__u64; 9usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_lut {
++ pub red: __u16,
++ pub green: __u16,
++ pub blue: __u16,
++ pub reserved: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct hdr_metadata_infoframe__bindgen_ty_1 {
++ pub x: __u16,
++ pub y: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub reserved: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip_target {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_dumb {
++ pub height: __u32,
++ pub width: __u32,
++ pub bpp: __u32,
++ pub flags: __u32,
++ pub handle: __u32,
++ pub pitch: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_map_dumb {
++ pub handle: __u32,
++ pub pad: __u32,
++ pub offset: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_dumb {
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_atomic {
++ pub flags: __u32,
++ pub count_objs: __u32,
++ pub objs_ptr: __u64,
++ pub count_props_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub reserved: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier_blob {
++ pub version: __u32,
++ pub flags: __u32,
++ pub count_formats: __u32,
++ pub formats_offset: __u32,
++ pub count_modifiers: __u32,
++ pub modifiers_offset: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier {
++ pub formats: __u64,
++ pub offset: __u32,
++ pub pad: __u32,
++ pub modifier: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_blob {
++ pub data: __u64,
++ pub length: __u32,
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_blob {
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_lease {
++ pub object_ids: __u64,
++ pub object_count: __u32,
++ pub flags: __u32,
++ pub lessee_id: __u32,
++ pub fd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_list_lessees {
++ pub count_lessees: __u32,
++ pub pad: __u32,
++ pub lessees_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_lease {
++ pub count_objects: __u32,
++ pub pad: __u32,
++ pub objects_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_revoke_lease {
++ pub lessee_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_rect {
++ pub x1: __s32,
++ pub y1: __s32,
++ pub x2: __s32,
++ pub y2: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event {
++ pub type_: __u32,
++ pub length: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_vblank {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub tv_sec: __u32,
++ pub tv_usec: __u32,
++ pub sequence: __u32,
++ pub crtc_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_crtc_sequence {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub time_ns: __s64,
++ pub sequence: __u64,
++}
++pub type drm_clip_rect_t = drm_clip_rect;
++pub type drm_drawable_info_t = drm_drawable_info;
++pub type drm_tex_region_t = drm_tex_region;
++pub type drm_hw_lock_t = drm_hw_lock;
++pub type drm_version_t = drm_version;
++pub type drm_unique_t = drm_unique;
++pub type drm_list_t = drm_list;
++pub type drm_block_t = drm_block;
++pub type drm_control_t = drm_control;
++pub use self::drm_map_flags::Type as drm_map_flags_t;
++pub use self::drm_map_type::Type as drm_map_type_t;
++pub type drm_ctx_priv_map_t = drm_ctx_priv_map;
++pub type drm_map_t = drm_map;
++pub type drm_client_t = drm_client;
++pub use self::drm_stat_type::Type as drm_stat_type_t;
++pub type drm_stats_t = drm_stats;
++pub use self::drm_lock_flags::Type as drm_lock_flags_t;
++pub type drm_lock_t = drm_lock;
++pub use self::drm_dma_flags::Type as drm_dma_flags_t;
++pub type drm_buf_desc_t = drm_buf_desc;
++pub type drm_buf_info_t = drm_buf_info;
++pub type drm_buf_free_t = drm_buf_free;
++pub type drm_buf_pub_t = drm_buf_pub;
++pub type drm_buf_map_t = drm_buf_map;
++pub type drm_dma_t = drm_dma;
++pub type drm_wait_vblank_t = drm_wait_vblank;
++pub type drm_agp_mode_t = drm_agp_mode;
++pub use self::drm_ctx_flags::Type as drm_ctx_flags_t;
++pub type drm_ctx_t = drm_ctx;
++pub type drm_ctx_res_t = drm_ctx_res;
++pub type drm_draw_t = drm_draw;
++pub type drm_update_draw_t = drm_update_draw;
++pub type drm_auth_t = drm_auth;
++pub type drm_irq_busid_t = drm_irq_busid;
++pub use self::drm_vblank_seq_type::Type as drm_vblank_seq_type_t;
++pub type drm_agp_buffer_t = drm_agp_buffer;
++pub type drm_agp_binding_t = drm_agp_binding;
++pub type drm_agp_info_t = drm_agp_info;
++pub type drm_scatter_gather_t = drm_scatter_gather;
++pub type drm_set_version_t = drm_set_version;
++pub const DRM_MODE_PROP_SIGNED_RANGE: libc::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: libc::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.4.0/src/platforms/freebsd/powerpc64/bindings.rs
+@@ -0,0 +1,1342 @@
++/* automatically generated by rust-bindgen 0.59.2 */
++
++pub const DRM_NAME: &[u8; 4usize] = b"drm\0";
++pub const DRM_MIN_ORDER: u32 = 5;
++pub const DRM_MAX_ORDER: u32 = 22;
++pub const DRM_RAM_PERCENT: u32 = 10;
++pub const _DRM_LOCK_HELD: u32 = 2147483648;
++pub const _DRM_LOCK_CONT: u32 = 1073741824;
++pub const _DRM_VBLANK_HIGH_CRTC_SHIFT: u32 = 1;
++pub const _DRM_PRE_MODESET: u32 = 1;
++pub const _DRM_POST_MODESET: u32 = 2;
++pub const DRM_CAP_DUMB_BUFFER: u32 = 1;
++pub const DRM_CAP_VBLANK_HIGH_CRTC: u32 = 2;
++pub const DRM_CAP_DUMB_PREFERRED_DEPTH: u32 = 3;
++pub const DRM_CAP_DUMB_PREFER_SHADOW: u32 = 4;
++pub const DRM_CAP_PRIME: u32 = 5;
++pub const DRM_PRIME_CAP_IMPORT: u32 = 1;
++pub const DRM_PRIME_CAP_EXPORT: u32 = 2;
++pub const DRM_CAP_TIMESTAMP_MONOTONIC: u32 = 6;
++pub const DRM_CAP_ASYNC_PAGE_FLIP: u32 = 7;
++pub const DRM_CAP_CURSOR_WIDTH: u32 = 8;
++pub const DRM_CAP_CURSOR_HEIGHT: u32 = 9;
++pub const DRM_CAP_ADDFB2_MODIFIERS: u32 = 16;
++pub const DRM_CAP_PAGE_FLIP_TARGET: u32 = 17;
++pub const DRM_CAP_CRTC_IN_VBLANK_EVENT: u32 = 18;
++pub const DRM_CAP_SYNCOBJ: u32 = 19;
++pub const DRM_CAP_SYNCOBJ_TIMELINE: u32 = 20;
++pub const DRM_CLIENT_CAP_STEREO_3D: u32 = 1;
++pub const DRM_CLIENT_CAP_UNIVERSAL_PLANES: u32 = 2;
++pub const DRM_CLIENT_CAP_ATOMIC: u32 = 3;
++pub const DRM_CLIENT_CAP_ASPECT_RATIO: u32 = 4;
++pub const DRM_CLIENT_CAP_WRITEBACK_CONNECTORS: u32 = 5;
++pub const DRM_SYNCOBJ_CREATE_SIGNALED: u32 = 1;
++pub const DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT: u32 = 2;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE: u32 = 4;
++pub const DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_RELATIVE: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_NEXT_ON_MISS: u32 = 2;
++pub const DRM_CONNECTOR_NAME_LEN: u32 = 32;
++pub const DRM_DISPLAY_MODE_LEN: u32 = 32;
++pub const DRM_PROP_NAME_LEN: u32 = 32;
++pub const DRM_MODE_TYPE_BUILTIN: u32 = 1;
++pub const DRM_MODE_TYPE_CLOCK_C: u32 = 3;
++pub const DRM_MODE_TYPE_CRTC_C: u32 = 5;
++pub const DRM_MODE_TYPE_PREFERRED: u32 = 8;
++pub const DRM_MODE_TYPE_DEFAULT: u32 = 16;
++pub const DRM_MODE_TYPE_USERDEF: u32 = 32;
++pub const DRM_MODE_TYPE_DRIVER: u32 = 64;
++pub const DRM_MODE_TYPE_ALL: u32 = 104;
++pub const DRM_MODE_FLAG_PHSYNC: u32 = 1;
++pub const DRM_MODE_FLAG_NHSYNC: u32 = 2;
++pub const DRM_MODE_FLAG_PVSYNC: u32 = 4;
++pub const DRM_MODE_FLAG_NVSYNC: u32 = 8;
++pub const DRM_MODE_FLAG_INTERLACE: u32 = 16;
++pub const DRM_MODE_FLAG_DBLSCAN: u32 = 32;
++pub const DRM_MODE_FLAG_CSYNC: u32 = 64;
++pub const DRM_MODE_FLAG_PCSYNC: u32 = 128;
++pub const DRM_MODE_FLAG_NCSYNC: u32 = 256;
++pub const DRM_MODE_FLAG_HSKEW: u32 = 512;
++pub const DRM_MODE_FLAG_BCAST: u32 = 1024;
++pub const DRM_MODE_FLAG_PIXMUX: u32 = 2048;
++pub const DRM_MODE_FLAG_DBLCLK: u32 = 4096;
++pub const DRM_MODE_FLAG_CLKDIV2: u32 = 8192;
++pub const DRM_MODE_FLAG_3D_MASK: u32 = 507904;
++pub const DRM_MODE_FLAG_3D_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_3D_FRAME_PACKING: u32 = 16384;
++pub const DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE: u32 = 32768;
++pub const DRM_MODE_FLAG_3D_LINE_ALTERNATIVE: u32 = 49152;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL: u32 = 65536;
++pub const DRM_MODE_FLAG_3D_L_DEPTH: u32 = 81920;
++pub const DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH: u32 = 98304;
++pub const DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: u32 = 114688;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: u32 = 131072;
++pub const DRM_MODE_PICTURE_ASPECT_NONE: u32 = 0;
++pub const DRM_MODE_PICTURE_ASPECT_4_3: u32 = 1;
++pub const DRM_MODE_PICTURE_ASPECT_16_9: u32 = 2;
++pub const DRM_MODE_PICTURE_ASPECT_64_27: u32 = 3;
++pub const DRM_MODE_PICTURE_ASPECT_256_135: u32 = 4;
++pub const DRM_MODE_CONTENT_TYPE_NO_DATA: u32 = 0;
++pub const DRM_MODE_CONTENT_TYPE_GRAPHICS: u32 = 1;
++pub const DRM_MODE_CONTENT_TYPE_PHOTO: u32 = 2;
++pub const DRM_MODE_CONTENT_TYPE_CINEMA: u32 = 3;
++pub const DRM_MODE_CONTENT_TYPE_GAME: u32 = 4;
++pub const DRM_MODE_FLAG_PIC_AR_MASK: u32 = 7864320;
++pub const DRM_MODE_FLAG_PIC_AR_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_PIC_AR_4_3: u32 = 524288;
++pub const DRM_MODE_FLAG_PIC_AR_16_9: u32 = 1048576;
++pub const DRM_MODE_FLAG_PIC_AR_64_27: u32 = 1572864;
++pub const DRM_MODE_FLAG_PIC_AR_256_135: u32 = 2097152;
++pub const DRM_MODE_FLAG_ALL: u32 = 521215;
++pub const DRM_MODE_DPMS_ON: u32 = 0;
++pub const DRM_MODE_DPMS_STANDBY: u32 = 1;
++pub const DRM_MODE_DPMS_SUSPEND: u32 = 2;
++pub const DRM_MODE_DPMS_OFF: u32 = 3;
++pub const DRM_MODE_SCALE_NONE: u32 = 0;
++pub const DRM_MODE_SCALE_FULLSCREEN: u32 = 1;
++pub const DRM_MODE_SCALE_CENTER: u32 = 2;
++pub const DRM_MODE_SCALE_ASPECT: u32 = 3;
++pub const DRM_MODE_DITHERING_OFF: u32 = 0;
++pub const DRM_MODE_DITHERING_ON: u32 = 1;
++pub const DRM_MODE_DITHERING_AUTO: u32 = 2;
++pub const DRM_MODE_DIRTY_OFF: u32 = 0;
++pub const DRM_MODE_DIRTY_ON: u32 = 1;
++pub const DRM_MODE_DIRTY_ANNOTATE: u32 = 2;
++pub const DRM_MODE_LINK_STATUS_GOOD: u32 = 0;
++pub const DRM_MODE_LINK_STATUS_BAD: u32 = 1;
++pub const DRM_MODE_ROTATE_0: u32 = 1;
++pub const DRM_MODE_ROTATE_90: u32 = 2;
++pub const DRM_MODE_ROTATE_180: u32 = 4;
++pub const DRM_MODE_ROTATE_270: u32 = 8;
++pub const DRM_MODE_ROTATE_MASK: u32 = 15;
++pub const DRM_MODE_REFLECT_X: u32 = 16;
++pub const DRM_MODE_REFLECT_Y: u32 = 32;
++pub const DRM_MODE_REFLECT_MASK: u32 = 48;
++pub const DRM_MODE_CONTENT_PROTECTION_UNDESIRED: u32 = 0;
++pub const DRM_MODE_CONTENT_PROTECTION_DESIRED: u32 = 1;
++pub const DRM_MODE_CONTENT_PROTECTION_ENABLED: u32 = 2;
++pub const DRM_MODE_PRESENT_TOP_FIELD: u32 = 1;
++pub const DRM_MODE_PRESENT_BOTTOM_FIELD: u32 = 2;
++pub const DRM_MODE_ENCODER_NONE: u32 = 0;
++pub const DRM_MODE_ENCODER_DAC: u32 = 1;
++pub const DRM_MODE_ENCODER_TMDS: u32 = 2;
++pub const DRM_MODE_ENCODER_LVDS: u32 = 3;
++pub const DRM_MODE_ENCODER_TVDAC: u32 = 4;
++pub const DRM_MODE_ENCODER_VIRTUAL: u32 = 5;
++pub const DRM_MODE_ENCODER_DSI: u32 = 6;
++pub const DRM_MODE_ENCODER_DPMST: u32 = 7;
++pub const DRM_MODE_ENCODER_DPI: u32 = 8;
++pub const DRM_MODE_CONNECTOR_Unknown: u32 = 0;
++pub const DRM_MODE_CONNECTOR_VGA: u32 = 1;
++pub const DRM_MODE_CONNECTOR_DVII: u32 = 2;
++pub const DRM_MODE_CONNECTOR_DVID: u32 = 3;
++pub const DRM_MODE_CONNECTOR_DVIA: u32 = 4;
++pub const DRM_MODE_CONNECTOR_Composite: u32 = 5;
++pub const DRM_MODE_CONNECTOR_SVIDEO: u32 = 6;
++pub const DRM_MODE_CONNECTOR_LVDS: u32 = 7;
++pub const DRM_MODE_CONNECTOR_Component: u32 = 8;
++pub const DRM_MODE_CONNECTOR_9PinDIN: u32 = 9;
++pub const DRM_MODE_CONNECTOR_DisplayPort: u32 = 10;
++pub const DRM_MODE_CONNECTOR_HDMIA: u32 = 11;
++pub const DRM_MODE_CONNECTOR_HDMIB: u32 = 12;
++pub const DRM_MODE_CONNECTOR_TV: u32 = 13;
++pub const DRM_MODE_CONNECTOR_eDP: u32 = 14;
++pub const DRM_MODE_CONNECTOR_VIRTUAL: u32 = 15;
++pub const DRM_MODE_CONNECTOR_DSI: u32 = 16;
++pub const DRM_MODE_CONNECTOR_DPI: u32 = 17;
++pub const DRM_MODE_CONNECTOR_WRITEBACK: u32 = 18;
++pub const DRM_MODE_CONNECTOR_SPI: u32 = 19;
++pub const DRM_MODE_CONNECTOR_USB: u32 = 20;
++pub const DRM_MODE_PROP_PENDING: u32 = 1;
++pub const DRM_MODE_PROP_RANGE: u32 = 2;
++pub const DRM_MODE_PROP_IMMUTABLE: u32 = 4;
++pub const DRM_MODE_PROP_ENUM: u32 = 8;
++pub const DRM_MODE_PROP_BLOB: u32 = 16;
++pub const DRM_MODE_PROP_BITMASK: u32 = 32;
++pub const DRM_MODE_PROP_LEGACY_TYPE: u32 = 58;
++pub const DRM_MODE_PROP_EXTENDED_TYPE: u32 = 65472;
++pub const DRM_MODE_PROP_ATOMIC: u32 = 2147483648;
++pub const DRM_MODE_OBJECT_CRTC: u32 = 3435973836;
++pub const DRM_MODE_OBJECT_CONNECTOR: u32 = 3233857728;
++pub const DRM_MODE_OBJECT_ENCODER: u32 = 3772834016;
++pub const DRM_MODE_OBJECT_MODE: u32 = 3739147998;
++pub const DRM_MODE_OBJECT_PROPERTY: u32 = 2964369584;
++pub const DRM_MODE_OBJECT_FB: u32 = 4227595259;
++pub const DRM_MODE_OBJECT_BLOB: u32 = 3149642683;
++pub const DRM_MODE_OBJECT_PLANE: u32 = 4008636142;
++pub const DRM_MODE_OBJECT_ANY: u32 = 0;
++pub const DRM_MODE_FB_INTERLACED: u32 = 1;
++pub const DRM_MODE_FB_MODIFIERS: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_COPY: u32 = 1;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_FILL: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_FLAGS: u32 = 3;
++pub const DRM_MODE_FB_DIRTY_MAX_CLIPS: u32 = 256;
++pub const DRM_MODE_CURSOR_BO: u32 = 1;
++pub const DRM_MODE_CURSOR_MOVE: u32 = 2;
++pub const DRM_MODE_CURSOR_FLAGS: u32 = 3;
++pub const DRM_MODE_PAGE_FLIP_EVENT: u32 = 1;
++pub const DRM_MODE_PAGE_FLIP_ASYNC: u32 = 2;
++pub const DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE: u32 = 4;
++pub const DRM_MODE_PAGE_FLIP_TARGET_RELATIVE: u32 = 8;
++pub const DRM_MODE_PAGE_FLIP_TARGET: u32 = 12;
++pub const DRM_MODE_PAGE_FLIP_FLAGS: u32 = 15;
++pub const DRM_MODE_ATOMIC_TEST_ONLY: u32 = 256;
++pub const DRM_MODE_ATOMIC_NONBLOCK: u32 = 512;
++pub const DRM_MODE_ATOMIC_ALLOW_MODESET: u32 = 1024;
++pub const DRM_MODE_ATOMIC_FLAGS: u32 = 1795;
++pub const DRM_IOCTL_BASE: u8 = 100u8;
++pub const DRM_COMMAND_BASE: u32 = 64;
++pub const DRM_COMMAND_END: u32 = 160;
++pub const DRM_EVENT_VBLANK: u32 = 1;
++pub const DRM_EVENT_FLIP_COMPLETE: u32 = 2;
++pub const DRM_EVENT_CRTC_SEQUENCE: u32 = 3;
++pub type __uint16_t = libc::c_ushort;
++pub type __int32_t = libc::c_int;
++pub type __uint32_t = libc::c_uint;
++pub type __int64_t = libc::c_long;
++pub type __uint64_t = libc::c_ulong;
++pub type __size_t = __uint64_t;
++pub type size_t = __size_t;
++pub type __u16 = u16;
++pub type __s32 = i32;
++pub type __u32 = u32;
++pub type __s64 = i64;
++pub type __u64 = u64;
++pub type __kernel_size_t = size_t;
++pub type drm_handle_t = libc::c_ulong;
++pub type drm_context_t = libc::c_uint;
++pub type drm_drawable_t = libc::c_uint;
++pub type drm_magic_t = libc::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: libc::c_ushort,
++ pub y1: libc::c_ushort,
++ pub x2: libc::c_ushort,
++ pub y2: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: libc::c_uint,
++ pub rects: *mut drm_clip_rect,
++}
++impl Default for drm_drawable_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_tex_region {
++ pub next: libc::c_uchar,
++ pub prev: libc::c_uchar,
++ pub in_use: libc::c_uchar,
++ pub padding: libc::c_uchar,
++ pub age: libc::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: libc::c_uint,
++ pub padding: [libc::c_char; 60usize],
++}
++impl Default for drm_hw_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_version {
++ pub version_major: libc::c_int,
++ pub version_minor: libc::c_int,
++ pub version_patchlevel: libc::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut libc::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut libc::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut libc::c_char,
++}
++impl Default for drm_version {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_unique {
++ pub unique_len: __kernel_size_t,
++ pub unique: *mut libc::c_char,
++}
++impl Default for drm_unique {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_list {
++ pub count: libc::c_int,
++ pub version: *mut drm_version,
++}
++impl Default for drm_list {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_block {
++ pub unused: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_control {
++ pub func: drm_control__bindgen_ty_1::Type,
++ pub irq: libc::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const DRM_ADD_COMMAND: Type = 0;
++ pub const DRM_RM_COMMAND: Type = 1;
++ pub const DRM_INST_HANDLER: Type = 2;
++ pub const DRM_UNINST_HANDLER: Type = 3;
++}
++impl Default for drm_control {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_map_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_FRAME_BUFFER: Type = 0;
++ pub const _DRM_REGISTERS: Type = 1;
++ pub const _DRM_SHM: Type = 2;
++ pub const _DRM_AGP: Type = 3;
++ pub const _DRM_SCATTER_GATHER: Type = 4;
++ pub const _DRM_CONSISTENT: Type = 5;
++}
++pub mod drm_map_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_RESTRICTED: Type = 1;
++ pub const _DRM_READ_ONLY: Type = 2;
++ pub const _DRM_LOCKED: Type = 4;
++ pub const _DRM_KERNEL: Type = 8;
++ pub const _DRM_WRITE_COMBINING: Type = 16;
++ pub const _DRM_CONTAINS_LOCK: Type = 32;
++ pub const _DRM_REMOVABLE: Type = 64;
++ pub const _DRM_DRIVER: Type = 128;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_priv_map {
++ pub ctx_id: libc::c_uint,
++ pub handle: *mut libc::c_void,
++}
++impl Default for drm_ctx_priv_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_map {
++ pub offset: libc::c_ulong,
++ pub size: libc::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut libc::c_void,
++ pub mtrr: libc::c_int,
++}
++impl Default for drm_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_client {
++ pub idx: libc::c_int,
++ pub auth: libc::c_int,
++ pub pid: libc::c_ulong,
++ pub uid: libc::c_ulong,
++ pub magic: libc::c_ulong,
++ pub iocs: libc::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_STAT_LOCK: Type = 0;
++ pub const _DRM_STAT_OPENS: Type = 1;
++ pub const _DRM_STAT_CLOSES: Type = 2;
++ pub const _DRM_STAT_IOCTLS: Type = 3;
++ pub const _DRM_STAT_LOCKS: Type = 4;
++ pub const _DRM_STAT_UNLOCKS: Type = 5;
++ pub const _DRM_STAT_VALUE: Type = 6;
++ pub const _DRM_STAT_BYTE: Type = 7;
++ pub const _DRM_STAT_COUNT: Type = 8;
++ pub const _DRM_STAT_IRQ: Type = 9;
++ pub const _DRM_STAT_PRIMARY: Type = 10;
++ pub const _DRM_STAT_SECONDARY: Type = 11;
++ pub const _DRM_STAT_DMA: Type = 12;
++ pub const _DRM_STAT_SPECIAL: Type = 13;
++ pub const _DRM_STAT_MISSED: Type = 14;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats {
++ pub count: libc::c_ulong,
++ pub data: [drm_stats__bindgen_ty_1; 15usize],
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats__bindgen_ty_1 {
++ pub value: libc::c_ulong,
++ pub type_: drm_stat_type::Type,
++}
++impl Default for drm_stats__bindgen_ty_1 {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++impl Default for drm_stats {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_lock_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_LOCK_READY: Type = 1;
++ pub const _DRM_LOCK_QUIESCENT: Type = 2;
++ pub const _DRM_LOCK_FLUSH: Type = 4;
++ pub const _DRM_LOCK_FLUSH_ALL: Type = 8;
++ pub const _DRM_HALT_ALL_QUEUES: Type = 16;
++ pub const _DRM_HALT_CUR_QUEUES: Type = 32;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_lock {
++ pub context: libc::c_int,
++ pub flags: drm_lock_flags::Type,
++}
++impl Default for drm_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_dma_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_DMA_BLOCK: Type = 1;
++ pub const _DRM_DMA_WHILE_LOCKED: Type = 2;
++ pub const _DRM_DMA_PRIORITY: Type = 4;
++ pub const _DRM_DMA_WAIT: Type = 16;
++ pub const _DRM_DMA_SMALLER_OK: Type = 32;
++ pub const _DRM_DMA_LARGER_OK: Type = 64;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_desc {
++ pub count: libc::c_int,
++ pub size: libc::c_int,
++ pub low_mark: libc::c_int,
++ pub high_mark: libc::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: libc::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const _DRM_PAGE_ALIGN: Type = 1;
++ pub const _DRM_AGP_BUFFER: Type = 2;
++ pub const _DRM_SG_BUFFER: Type = 4;
++ pub const _DRM_FB_BUFFER: Type = 8;
++ pub const _DRM_PCI_BUFFER_RO: Type = 16;
++}
++impl Default for drm_buf_desc {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_info {
++ pub count: libc::c_int,
++ pub list: *mut drm_buf_desc,
++}
++impl Default for drm_buf_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_free {
++ pub count: libc::c_int,
++ pub list: *mut libc::c_int,
++}
++impl Default for drm_buf_free {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_pub {
++ pub idx: libc::c_int,
++ pub total: libc::c_int,
++ pub used: libc::c_int,
++ pub address: *mut libc::c_void,
++}
++impl Default for drm_buf_pub {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_map {
++ pub count: libc::c_int,
++ pub virtual_: *mut libc::c_void,
++ pub list: *mut drm_buf_pub,
++}
++impl Default for drm_buf_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_dma {
++ pub context: libc::c_int,
++ pub send_count: libc::c_int,
++ pub send_indices: *mut libc::c_int,
++ pub send_sizes: *mut libc::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: libc::c_int,
++ pub request_size: libc::c_int,
++ pub request_indices: *mut libc::c_int,
++ pub request_sizes: *mut libc::c_int,
++ pub granted_count: libc::c_int,
++}
++impl Default for drm_dma {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_ctx_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_CONTEXT_PRESERVED: Type = 1;
++ pub const _DRM_CONTEXT_2DONLY: Type = 2;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx {
++ pub handle: drm_context_t,
++ pub flags: drm_ctx_flags::Type,
++}
++impl Default for drm_ctx {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_res {
++ pub count: libc::c_int,
++ pub contexts: *mut drm_ctx,
++}
++impl Default for drm_ctx_res {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_draw {
++ pub handle: drm_drawable_t,
++}
++pub mod drm_drawable_info_type_t {
++ pub type Type = libc::c_uint;
++ pub const DRM_DRAWABLE_CLIPRECTS: Type = 0;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_update_draw {
++ pub handle: drm_drawable_t,
++ pub type_: libc::c_uint,
++ pub num: libc::c_uint,
++ pub data: libc::c_ulonglong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_auth {
++ pub magic: drm_magic_t,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_irq_busid {
++ pub irq: libc::c_int,
++ pub busnum: libc::c_int,
++ pub devnum: libc::c_int,
++ pub funcnum: libc::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_VBLANK_ABSOLUTE: Type = 0;
++ pub const _DRM_VBLANK_RELATIVE: Type = 1;
++ pub const _DRM_VBLANK_HIGH_CRTC_MASK: Type = 62;
++ pub const _DRM_VBLANK_EVENT: Type = 67108864;
++ pub const _DRM_VBLANK_FLIP: Type = 134217728;
++ pub const _DRM_VBLANK_NEXTONMISS: Type = 268435456;
++ pub const _DRM_VBLANK_SECONDARY: Type = 536870912;
++ pub const _DRM_VBLANK_SIGNAL: Type = 1073741824;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_request {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub signal: libc::c_ulong,
++}
++impl Default for drm_wait_vblank_request {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_reply {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub tval_sec: libc::c_long,
++ pub tval_usec: libc::c_long,
++}
++impl Default for drm_wait_vblank_reply {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Copy, Clone)]
++pub union drm_wait_vblank {
++ pub request: drm_wait_vblank_request,
++ pub reply: drm_wait_vblank_reply,
++}
++impl Default for drm_wait_vblank {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_modeset_ctl {
++ pub crtc: __u32,
++ pub cmd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_mode {
++ pub mode: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++ pub type_: libc::c_ulong,
++ pub physical: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: libc::c_ulong,
++ pub offset: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: libc::c_int,
++ pub agp_version_minor: libc::c_int,
++ pub mode: libc::c_ulong,
++ pub aperture_base: libc::c_ulong,
++ pub aperture_size: libc::c_ulong,
++ pub memory_allowed: libc::c_ulong,
++ pub memory_used: libc::c_ulong,
++ pub id_vendor: libc::c_ushort,
++ pub id_device: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: libc::c_int,
++ pub drm_di_minor: libc::c_int,
++ pub drm_dd_major: libc::c_int,
++ pub drm_dd_minor: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_close {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_flink {
++ pub handle: __u32,
++ pub name: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_open {
++ pub name: __u32,
++ pub handle: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_get_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_client_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_prime_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_create {
++ pub handle: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_destroy {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_transfer {
++ pub src_handle: __u32,
++ pub dst_handle: __u32,
++ pub src_point: __u64,
++ pub dst_point: __u64,
++ pub flags: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_wait {
++ pub handles: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_wait {
++ pub handles: __u64,
++ pub points: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_array {
++ pub handles: __u64,
++ pub count_handles: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_array {
++ pub handles: __u64,
++ pub points: __u64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_get_sequence {
++ pub crtc_id: __u32,
++ pub active: __u32,
++ pub sequence: __u64,
++ pub sequence_ns: __s64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_queue_sequence {
++ pub crtc_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_modeinfo {
++ pub clock: __u32,
++ pub hdisplay: __u16,
++ pub hsync_start: __u16,
++ pub hsync_end: __u16,
++ pub htotal: __u16,
++ pub hskew: __u16,
++ pub vdisplay: __u16,
++ pub vsync_start: __u16,
++ pub vsync_end: __u16,
++ pub vtotal: __u16,
++ pub vscan: __u16,
++ pub vrefresh: __u32,
++ pub flags: __u32,
++ pub type_: __u32,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_card_res {
++ pub fb_id_ptr: __u64,
++ pub crtc_id_ptr: __u64,
++ pub connector_id_ptr: __u64,
++ pub encoder_id_ptr: __u64,
++ pub count_fbs: __u32,
++ pub count_crtcs: __u32,
++ pub count_connectors: __u32,
++ pub count_encoders: __u32,
++ pub min_width: __u32,
++ pub max_width: __u32,
++ pub min_height: __u32,
++ pub max_height: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc {
++ pub set_connectors_ptr: __u64,
++ pub count_connectors: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub x: __u32,
++ pub y: __u32,
++ pub gamma_size: __u32,
++ pub mode_valid: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_set_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub crtc_x: __s32,
++ pub crtc_y: __s32,
++ pub crtc_w: __u32,
++ pub crtc_h: __u32,
++ pub src_x: __u32,
++ pub src_y: __u32,
++ pub src_h: __u32,
++ pub src_w: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub possible_crtcs: __u32,
++ pub gamma_size: __u32,
++ pub count_format_types: __u32,
++ pub format_type_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane_res {
++ pub plane_id_ptr: __u64,
++ pub count_planes: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_encoder {
++ pub encoder_id: __u32,
++ pub encoder_type: __u32,
++ pub crtc_id: __u32,
++ pub possible_crtcs: __u32,
++ pub possible_clones: __u32,
++}
++pub mod drm_mode_subconnector {
++ pub type Type = libc::c_uint;
++ pub const DRM_MODE_SUBCONNECTOR_Automatic: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_Unknown: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_VGA: Type = 1;
++ pub const DRM_MODE_SUBCONNECTOR_DVID: Type = 3;
++ pub const DRM_MODE_SUBCONNECTOR_DVIA: Type = 4;
++ pub const DRM_MODE_SUBCONNECTOR_Composite: Type = 5;
++ pub const DRM_MODE_SUBCONNECTOR_SVIDEO: Type = 6;
++ pub const DRM_MODE_SUBCONNECTOR_Component: Type = 8;
++ pub const DRM_MODE_SUBCONNECTOR_SCART: Type = 9;
++ pub const DRM_MODE_SUBCONNECTOR_DisplayPort: Type = 10;
++ pub const DRM_MODE_SUBCONNECTOR_HDMIA: Type = 11;
++ pub const DRM_MODE_SUBCONNECTOR_Native: Type = 15;
++ pub const DRM_MODE_SUBCONNECTOR_Wireless: Type = 18;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_connector {
++ pub encoders_ptr: __u64,
++ pub modes_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_modes: __u32,
++ pub count_props: __u32,
++ pub count_encoders: __u32,
++ pub encoder_id: __u32,
++ pub connector_id: __u32,
++ pub connector_type: __u32,
++ pub connector_type_id: __u32,
++ pub connection: __u32,
++ pub mm_width: __u32,
++ pub mm_height: __u32,
++ pub subpixel: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_property_enum {
++ pub value: __u64,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_property {
++ pub values_ptr: __u64,
++ pub enum_blob_ptr: __u64,
++ pub prop_id: __u32,
++ pub flags: __u32,
++ pub name: [libc::c_char; 32usize],
++ pub count_values: __u32,
++ pub count_enum_blobs: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_connector_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub connector_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_get_properties {
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_props: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_blob {
++ pub blob_id: __u32,
++ pub length: __u32,
++ pub data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pitch: __u32,
++ pub bpp: __u32,
++ pub depth: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd2 {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pixel_format: __u32,
++ pub flags: __u32,
++ pub handles: [__u32; 4usize],
++ pub pitches: [__u32; 4usize],
++ pub offsets: [__u32; 4usize],
++ pub modifier: [__u64; 4usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_dirty_cmd {
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub color: __u32,
++ pub num_clips: __u32,
++ pub clips_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_mode_cmd {
++ pub connector_id: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor2 {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++ pub hot_x: __s32,
++ pub hot_y: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_lut {
++ pub crtc_id: __u32,
++ pub gamma_size: __u32,
++ pub red: __u64,
++ pub green: __u64,
++ pub blue: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_ctm {
++ pub matrix: [__u64; 9usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_lut {
++ pub red: __u16,
++ pub green: __u16,
++ pub blue: __u16,
++ pub reserved: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct hdr_metadata_infoframe__bindgen_ty_1 {
++ pub x: __u16,
++ pub y: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub reserved: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip_target {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_dumb {
++ pub height: __u32,
++ pub width: __u32,
++ pub bpp: __u32,
++ pub flags: __u32,
++ pub handle: __u32,
++ pub pitch: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_map_dumb {
++ pub handle: __u32,
++ pub pad: __u32,
++ pub offset: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_dumb {
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_atomic {
++ pub flags: __u32,
++ pub count_objs: __u32,
++ pub objs_ptr: __u64,
++ pub count_props_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub reserved: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier_blob {
++ pub version: __u32,
++ pub flags: __u32,
++ pub count_formats: __u32,
++ pub formats_offset: __u32,
++ pub count_modifiers: __u32,
++ pub modifiers_offset: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier {
++ pub formats: __u64,
++ pub offset: __u32,
++ pub pad: __u32,
++ pub modifier: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_blob {
++ pub data: __u64,
++ pub length: __u32,
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_blob {
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_lease {
++ pub object_ids: __u64,
++ pub object_count: __u32,
++ pub flags: __u32,
++ pub lessee_id: __u32,
++ pub fd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_list_lessees {
++ pub count_lessees: __u32,
++ pub pad: __u32,
++ pub lessees_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_lease {
++ pub count_objects: __u32,
++ pub pad: __u32,
++ pub objects_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_revoke_lease {
++ pub lessee_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_rect {
++ pub x1: __s32,
++ pub y1: __s32,
++ pub x2: __s32,
++ pub y2: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event {
++ pub type_: __u32,
++ pub length: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_vblank {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub tv_sec: __u32,
++ pub tv_usec: __u32,
++ pub sequence: __u32,
++ pub crtc_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_crtc_sequence {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub time_ns: __s64,
++ pub sequence: __u64,
++}
++pub type drm_clip_rect_t = drm_clip_rect;
++pub type drm_drawable_info_t = drm_drawable_info;
++pub type drm_tex_region_t = drm_tex_region;
++pub type drm_hw_lock_t = drm_hw_lock;
++pub type drm_version_t = drm_version;
++pub type drm_unique_t = drm_unique;
++pub type drm_list_t = drm_list;
++pub type drm_block_t = drm_block;
++pub type drm_control_t = drm_control;
++pub use self::drm_map_flags::Type as drm_map_flags_t;
++pub use self::drm_map_type::Type as drm_map_type_t;
++pub type drm_ctx_priv_map_t = drm_ctx_priv_map;
++pub type drm_map_t = drm_map;
++pub type drm_client_t = drm_client;
++pub use self::drm_stat_type::Type as drm_stat_type_t;
++pub type drm_stats_t = drm_stats;
++pub use self::drm_lock_flags::Type as drm_lock_flags_t;
++pub type drm_lock_t = drm_lock;
++pub use self::drm_dma_flags::Type as drm_dma_flags_t;
++pub type drm_buf_desc_t = drm_buf_desc;
++pub type drm_buf_info_t = drm_buf_info;
++pub type drm_buf_free_t = drm_buf_free;
++pub type drm_buf_pub_t = drm_buf_pub;
++pub type drm_buf_map_t = drm_buf_map;
++pub type drm_dma_t = drm_dma;
++pub type drm_wait_vblank_t = drm_wait_vblank;
++pub type drm_agp_mode_t = drm_agp_mode;
++pub use self::drm_ctx_flags::Type as drm_ctx_flags_t;
++pub type drm_ctx_t = drm_ctx;
++pub type drm_ctx_res_t = drm_ctx_res;
++pub type drm_draw_t = drm_draw;
++pub type drm_update_draw_t = drm_update_draw;
++pub type drm_auth_t = drm_auth;
++pub type drm_irq_busid_t = drm_irq_busid;
++pub use self::drm_vblank_seq_type::Type as drm_vblank_seq_type_t;
++pub type drm_agp_buffer_t = drm_agp_buffer;
++pub type drm_agp_binding_t = drm_agp_binding;
++pub type drm_agp_info_t = drm_agp_info;
++pub type drm_scatter_gather_t = drm_scatter_gather;
++pub type drm_set_version_t = drm_set_version;
++pub const DRM_MODE_PROP_SIGNED_RANGE: libc::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: libc::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.4.0/src/platforms/freebsd/x86/bindings.rs
+@@ -0,0 +1,1342 @@
++/* automatically generated by rust-bindgen 0.59.2 */
++
++pub const DRM_NAME: &[u8; 4usize] = b"drm\0";
++pub const DRM_MIN_ORDER: u32 = 5;
++pub const DRM_MAX_ORDER: u32 = 22;
++pub const DRM_RAM_PERCENT: u32 = 10;
++pub const _DRM_LOCK_HELD: u32 = 2147483648;
++pub const _DRM_LOCK_CONT: u32 = 1073741824;
++pub const _DRM_VBLANK_HIGH_CRTC_SHIFT: u32 = 1;
++pub const _DRM_PRE_MODESET: u32 = 1;
++pub const _DRM_POST_MODESET: u32 = 2;
++pub const DRM_CAP_DUMB_BUFFER: u32 = 1;
++pub const DRM_CAP_VBLANK_HIGH_CRTC: u32 = 2;
++pub const DRM_CAP_DUMB_PREFERRED_DEPTH: u32 = 3;
++pub const DRM_CAP_DUMB_PREFER_SHADOW: u32 = 4;
++pub const DRM_CAP_PRIME: u32 = 5;
++pub const DRM_PRIME_CAP_IMPORT: u32 = 1;
++pub const DRM_PRIME_CAP_EXPORT: u32 = 2;
++pub const DRM_CAP_TIMESTAMP_MONOTONIC: u32 = 6;
++pub const DRM_CAP_ASYNC_PAGE_FLIP: u32 = 7;
++pub const DRM_CAP_CURSOR_WIDTH: u32 = 8;
++pub const DRM_CAP_CURSOR_HEIGHT: u32 = 9;
++pub const DRM_CAP_ADDFB2_MODIFIERS: u32 = 16;
++pub const DRM_CAP_PAGE_FLIP_TARGET: u32 = 17;
++pub const DRM_CAP_CRTC_IN_VBLANK_EVENT: u32 = 18;
++pub const DRM_CAP_SYNCOBJ: u32 = 19;
++pub const DRM_CAP_SYNCOBJ_TIMELINE: u32 = 20;
++pub const DRM_CLIENT_CAP_STEREO_3D: u32 = 1;
++pub const DRM_CLIENT_CAP_UNIVERSAL_PLANES: u32 = 2;
++pub const DRM_CLIENT_CAP_ATOMIC: u32 = 3;
++pub const DRM_CLIENT_CAP_ASPECT_RATIO: u32 = 4;
++pub const DRM_CLIENT_CAP_WRITEBACK_CONNECTORS: u32 = 5;
++pub const DRM_SYNCOBJ_CREATE_SIGNALED: u32 = 1;
++pub const DRM_SYNCOBJ_FD_TO_HANDLE_FLAGS_IMPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL: u32 = 1;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT: u32 = 2;
++pub const DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE: u32 = 4;
++pub const DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_RELATIVE: u32 = 1;
++pub const DRM_CRTC_SEQUENCE_NEXT_ON_MISS: u32 = 2;
++pub const DRM_CONNECTOR_NAME_LEN: u32 = 32;
++pub const DRM_DISPLAY_MODE_LEN: u32 = 32;
++pub const DRM_PROP_NAME_LEN: u32 = 32;
++pub const DRM_MODE_TYPE_BUILTIN: u32 = 1;
++pub const DRM_MODE_TYPE_CLOCK_C: u32 = 3;
++pub const DRM_MODE_TYPE_CRTC_C: u32 = 5;
++pub const DRM_MODE_TYPE_PREFERRED: u32 = 8;
++pub const DRM_MODE_TYPE_DEFAULT: u32 = 16;
++pub const DRM_MODE_TYPE_USERDEF: u32 = 32;
++pub const DRM_MODE_TYPE_DRIVER: u32 = 64;
++pub const DRM_MODE_TYPE_ALL: u32 = 104;
++pub const DRM_MODE_FLAG_PHSYNC: u32 = 1;
++pub const DRM_MODE_FLAG_NHSYNC: u32 = 2;
++pub const DRM_MODE_FLAG_PVSYNC: u32 = 4;
++pub const DRM_MODE_FLAG_NVSYNC: u32 = 8;
++pub const DRM_MODE_FLAG_INTERLACE: u32 = 16;
++pub const DRM_MODE_FLAG_DBLSCAN: u32 = 32;
++pub const DRM_MODE_FLAG_CSYNC: u32 = 64;
++pub const DRM_MODE_FLAG_PCSYNC: u32 = 128;
++pub const DRM_MODE_FLAG_NCSYNC: u32 = 256;
++pub const DRM_MODE_FLAG_HSKEW: u32 = 512;
++pub const DRM_MODE_FLAG_BCAST: u32 = 1024;
++pub const DRM_MODE_FLAG_PIXMUX: u32 = 2048;
++pub const DRM_MODE_FLAG_DBLCLK: u32 = 4096;
++pub const DRM_MODE_FLAG_CLKDIV2: u32 = 8192;
++pub const DRM_MODE_FLAG_3D_MASK: u32 = 507904;
++pub const DRM_MODE_FLAG_3D_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_3D_FRAME_PACKING: u32 = 16384;
++pub const DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE: u32 = 32768;
++pub const DRM_MODE_FLAG_3D_LINE_ALTERNATIVE: u32 = 49152;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL: u32 = 65536;
++pub const DRM_MODE_FLAG_3D_L_DEPTH: u32 = 81920;
++pub const DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH: u32 = 98304;
++pub const DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: u32 = 114688;
++pub const DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: u32 = 131072;
++pub const DRM_MODE_PICTURE_ASPECT_NONE: u32 = 0;
++pub const DRM_MODE_PICTURE_ASPECT_4_3: u32 = 1;
++pub const DRM_MODE_PICTURE_ASPECT_16_9: u32 = 2;
++pub const DRM_MODE_PICTURE_ASPECT_64_27: u32 = 3;
++pub const DRM_MODE_PICTURE_ASPECT_256_135: u32 = 4;
++pub const DRM_MODE_CONTENT_TYPE_NO_DATA: u32 = 0;
++pub const DRM_MODE_CONTENT_TYPE_GRAPHICS: u32 = 1;
++pub const DRM_MODE_CONTENT_TYPE_PHOTO: u32 = 2;
++pub const DRM_MODE_CONTENT_TYPE_CINEMA: u32 = 3;
++pub const DRM_MODE_CONTENT_TYPE_GAME: u32 = 4;
++pub const DRM_MODE_FLAG_PIC_AR_MASK: u32 = 7864320;
++pub const DRM_MODE_FLAG_PIC_AR_NONE: u32 = 0;
++pub const DRM_MODE_FLAG_PIC_AR_4_3: u32 = 524288;
++pub const DRM_MODE_FLAG_PIC_AR_16_9: u32 = 1048576;
++pub const DRM_MODE_FLAG_PIC_AR_64_27: u32 = 1572864;
++pub const DRM_MODE_FLAG_PIC_AR_256_135: u32 = 2097152;
++pub const DRM_MODE_FLAG_ALL: u32 = 521215;
++pub const DRM_MODE_DPMS_ON: u32 = 0;
++pub const DRM_MODE_DPMS_STANDBY: u32 = 1;
++pub const DRM_MODE_DPMS_SUSPEND: u32 = 2;
++pub const DRM_MODE_DPMS_OFF: u32 = 3;
++pub const DRM_MODE_SCALE_NONE: u32 = 0;
++pub const DRM_MODE_SCALE_FULLSCREEN: u32 = 1;
++pub const DRM_MODE_SCALE_CENTER: u32 = 2;
++pub const DRM_MODE_SCALE_ASPECT: u32 = 3;
++pub const DRM_MODE_DITHERING_OFF: u32 = 0;
++pub const DRM_MODE_DITHERING_ON: u32 = 1;
++pub const DRM_MODE_DITHERING_AUTO: u32 = 2;
++pub const DRM_MODE_DIRTY_OFF: u32 = 0;
++pub const DRM_MODE_DIRTY_ON: u32 = 1;
++pub const DRM_MODE_DIRTY_ANNOTATE: u32 = 2;
++pub const DRM_MODE_LINK_STATUS_GOOD: u32 = 0;
++pub const DRM_MODE_LINK_STATUS_BAD: u32 = 1;
++pub const DRM_MODE_ROTATE_0: u32 = 1;
++pub const DRM_MODE_ROTATE_90: u32 = 2;
++pub const DRM_MODE_ROTATE_180: u32 = 4;
++pub const DRM_MODE_ROTATE_270: u32 = 8;
++pub const DRM_MODE_ROTATE_MASK: u32 = 15;
++pub const DRM_MODE_REFLECT_X: u32 = 16;
++pub const DRM_MODE_REFLECT_Y: u32 = 32;
++pub const DRM_MODE_REFLECT_MASK: u32 = 48;
++pub const DRM_MODE_CONTENT_PROTECTION_UNDESIRED: u32 = 0;
++pub const DRM_MODE_CONTENT_PROTECTION_DESIRED: u32 = 1;
++pub const DRM_MODE_CONTENT_PROTECTION_ENABLED: u32 = 2;
++pub const DRM_MODE_PRESENT_TOP_FIELD: u32 = 1;
++pub const DRM_MODE_PRESENT_BOTTOM_FIELD: u32 = 2;
++pub const DRM_MODE_ENCODER_NONE: u32 = 0;
++pub const DRM_MODE_ENCODER_DAC: u32 = 1;
++pub const DRM_MODE_ENCODER_TMDS: u32 = 2;
++pub const DRM_MODE_ENCODER_LVDS: u32 = 3;
++pub const DRM_MODE_ENCODER_TVDAC: u32 = 4;
++pub const DRM_MODE_ENCODER_VIRTUAL: u32 = 5;
++pub const DRM_MODE_ENCODER_DSI: u32 = 6;
++pub const DRM_MODE_ENCODER_DPMST: u32 = 7;
++pub const DRM_MODE_ENCODER_DPI: u32 = 8;
++pub const DRM_MODE_CONNECTOR_Unknown: u32 = 0;
++pub const DRM_MODE_CONNECTOR_VGA: u32 = 1;
++pub const DRM_MODE_CONNECTOR_DVII: u32 = 2;
++pub const DRM_MODE_CONNECTOR_DVID: u32 = 3;
++pub const DRM_MODE_CONNECTOR_DVIA: u32 = 4;
++pub const DRM_MODE_CONNECTOR_Composite: u32 = 5;
++pub const DRM_MODE_CONNECTOR_SVIDEO: u32 = 6;
++pub const DRM_MODE_CONNECTOR_LVDS: u32 = 7;
++pub const DRM_MODE_CONNECTOR_Component: u32 = 8;
++pub const DRM_MODE_CONNECTOR_9PinDIN: u32 = 9;
++pub const DRM_MODE_CONNECTOR_DisplayPort: u32 = 10;
++pub const DRM_MODE_CONNECTOR_HDMIA: u32 = 11;
++pub const DRM_MODE_CONNECTOR_HDMIB: u32 = 12;
++pub const DRM_MODE_CONNECTOR_TV: u32 = 13;
++pub const DRM_MODE_CONNECTOR_eDP: u32 = 14;
++pub const DRM_MODE_CONNECTOR_VIRTUAL: u32 = 15;
++pub const DRM_MODE_CONNECTOR_DSI: u32 = 16;
++pub const DRM_MODE_CONNECTOR_DPI: u32 = 17;
++pub const DRM_MODE_CONNECTOR_WRITEBACK: u32 = 18;
++pub const DRM_MODE_CONNECTOR_SPI: u32 = 19;
++pub const DRM_MODE_CONNECTOR_USB: u32 = 20;
++pub const DRM_MODE_PROP_PENDING: u32 = 1;
++pub const DRM_MODE_PROP_RANGE: u32 = 2;
++pub const DRM_MODE_PROP_IMMUTABLE: u32 = 4;
++pub const DRM_MODE_PROP_ENUM: u32 = 8;
++pub const DRM_MODE_PROP_BLOB: u32 = 16;
++pub const DRM_MODE_PROP_BITMASK: u32 = 32;
++pub const DRM_MODE_PROP_LEGACY_TYPE: u32 = 58;
++pub const DRM_MODE_PROP_EXTENDED_TYPE: u32 = 65472;
++pub const DRM_MODE_PROP_ATOMIC: u32 = 2147483648;
++pub const DRM_MODE_OBJECT_CRTC: u32 = 3435973836;
++pub const DRM_MODE_OBJECT_CONNECTOR: u32 = 3233857728;
++pub const DRM_MODE_OBJECT_ENCODER: u32 = 3772834016;
++pub const DRM_MODE_OBJECT_MODE: u32 = 3739147998;
++pub const DRM_MODE_OBJECT_PROPERTY: u32 = 2964369584;
++pub const DRM_MODE_OBJECT_FB: u32 = 4227595259;
++pub const DRM_MODE_OBJECT_BLOB: u32 = 3149642683;
++pub const DRM_MODE_OBJECT_PLANE: u32 = 4008636142;
++pub const DRM_MODE_OBJECT_ANY: u32 = 0;
++pub const DRM_MODE_FB_INTERLACED: u32 = 1;
++pub const DRM_MODE_FB_MODIFIERS: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_COPY: u32 = 1;
++pub const DRM_MODE_FB_DIRTY_ANNOTATE_FILL: u32 = 2;
++pub const DRM_MODE_FB_DIRTY_FLAGS: u32 = 3;
++pub const DRM_MODE_FB_DIRTY_MAX_CLIPS: u32 = 256;
++pub const DRM_MODE_CURSOR_BO: u32 = 1;
++pub const DRM_MODE_CURSOR_MOVE: u32 = 2;
++pub const DRM_MODE_CURSOR_FLAGS: u32 = 3;
++pub const DRM_MODE_PAGE_FLIP_EVENT: u32 = 1;
++pub const DRM_MODE_PAGE_FLIP_ASYNC: u32 = 2;
++pub const DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE: u32 = 4;
++pub const DRM_MODE_PAGE_FLIP_TARGET_RELATIVE: u32 = 8;
++pub const DRM_MODE_PAGE_FLIP_TARGET: u32 = 12;
++pub const DRM_MODE_PAGE_FLIP_FLAGS: u32 = 15;
++pub const DRM_MODE_ATOMIC_TEST_ONLY: u32 = 256;
++pub const DRM_MODE_ATOMIC_NONBLOCK: u32 = 512;
++pub const DRM_MODE_ATOMIC_ALLOW_MODESET: u32 = 1024;
++pub const DRM_MODE_ATOMIC_FLAGS: u32 = 1795;
++pub const DRM_IOCTL_BASE: u8 = 100u8;
++pub const DRM_COMMAND_BASE: u32 = 64;
++pub const DRM_COMMAND_END: u32 = 160;
++pub const DRM_EVENT_VBLANK: u32 = 1;
++pub const DRM_EVENT_FLIP_COMPLETE: u32 = 2;
++pub const DRM_EVENT_CRTC_SEQUENCE: u32 = 3;
++pub type __uint16_t = libc::c_ushort;
++pub type __int32_t = libc::c_int;
++pub type __uint32_t = libc::c_uint;
++pub type __int64_t = libc::c_longlong;
++pub type __uint64_t = libc::c_ulonglong;
++pub type __size_t = __uint32_t;
++pub type size_t = __size_t;
++pub type __u16 = u16;
++pub type __s32 = i32;
++pub type __u32 = u32;
++pub type __s64 = i64;
++pub type __u64 = u64;
++pub type __kernel_size_t = size_t;
++pub type drm_handle_t = libc::c_ulong;
++pub type drm_context_t = libc::c_uint;
++pub type drm_drawable_t = libc::c_uint;
++pub type drm_magic_t = libc::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: libc::c_ushort,
++ pub y1: libc::c_ushort,
++ pub x2: libc::c_ushort,
++ pub y2: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: libc::c_uint,
++ pub rects: *mut drm_clip_rect,
++}
++impl Default for drm_drawable_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_tex_region {
++ pub next: libc::c_uchar,
++ pub prev: libc::c_uchar,
++ pub in_use: libc::c_uchar,
++ pub padding: libc::c_uchar,
++ pub age: libc::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: libc::c_uint,
++ pub padding: [libc::c_char; 60usize],
++}
++impl Default for drm_hw_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_version {
++ pub version_major: libc::c_int,
++ pub version_minor: libc::c_int,
++ pub version_patchlevel: libc::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut libc::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut libc::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut libc::c_char,
++}
++impl Default for drm_version {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_unique {
++ pub unique_len: __kernel_size_t,
++ pub unique: *mut libc::c_char,
++}
++impl Default for drm_unique {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_list {
++ pub count: libc::c_int,
++ pub version: *mut drm_version,
++}
++impl Default for drm_list {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_block {
++ pub unused: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_control {
++ pub func: drm_control__bindgen_ty_1::Type,
++ pub irq: libc::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const DRM_ADD_COMMAND: Type = 0;
++ pub const DRM_RM_COMMAND: Type = 1;
++ pub const DRM_INST_HANDLER: Type = 2;
++ pub const DRM_UNINST_HANDLER: Type = 3;
++}
++impl Default for drm_control {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_map_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_FRAME_BUFFER: Type = 0;
++ pub const _DRM_REGISTERS: Type = 1;
++ pub const _DRM_SHM: Type = 2;
++ pub const _DRM_AGP: Type = 3;
++ pub const _DRM_SCATTER_GATHER: Type = 4;
++ pub const _DRM_CONSISTENT: Type = 5;
++}
++pub mod drm_map_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_RESTRICTED: Type = 1;
++ pub const _DRM_READ_ONLY: Type = 2;
++ pub const _DRM_LOCKED: Type = 4;
++ pub const _DRM_KERNEL: Type = 8;
++ pub const _DRM_WRITE_COMBINING: Type = 16;
++ pub const _DRM_CONTAINS_LOCK: Type = 32;
++ pub const _DRM_REMOVABLE: Type = 64;
++ pub const _DRM_DRIVER: Type = 128;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_priv_map {
++ pub ctx_id: libc::c_uint,
++ pub handle: *mut libc::c_void,
++}
++impl Default for drm_ctx_priv_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_map {
++ pub offset: libc::c_ulong,
++ pub size: libc::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut libc::c_void,
++ pub mtrr: libc::c_int,
++}
++impl Default for drm_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_client {
++ pub idx: libc::c_int,
++ pub auth: libc::c_int,
++ pub pid: libc::c_ulong,
++ pub uid: libc::c_ulong,
++ pub magic: libc::c_ulong,
++ pub iocs: libc::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_STAT_LOCK: Type = 0;
++ pub const _DRM_STAT_OPENS: Type = 1;
++ pub const _DRM_STAT_CLOSES: Type = 2;
++ pub const _DRM_STAT_IOCTLS: Type = 3;
++ pub const _DRM_STAT_LOCKS: Type = 4;
++ pub const _DRM_STAT_UNLOCKS: Type = 5;
++ pub const _DRM_STAT_VALUE: Type = 6;
++ pub const _DRM_STAT_BYTE: Type = 7;
++ pub const _DRM_STAT_COUNT: Type = 8;
++ pub const _DRM_STAT_IRQ: Type = 9;
++ pub const _DRM_STAT_PRIMARY: Type = 10;
++ pub const _DRM_STAT_SECONDARY: Type = 11;
++ pub const _DRM_STAT_DMA: Type = 12;
++ pub const _DRM_STAT_SPECIAL: Type = 13;
++ pub const _DRM_STAT_MISSED: Type = 14;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats {
++ pub count: libc::c_ulong,
++ pub data: [drm_stats__bindgen_ty_1; 15usize],
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_stats__bindgen_ty_1 {
++ pub value: libc::c_ulong,
++ pub type_: drm_stat_type::Type,
++}
++impl Default for drm_stats__bindgen_ty_1 {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++impl Default for drm_stats {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_lock_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_LOCK_READY: Type = 1;
++ pub const _DRM_LOCK_QUIESCENT: Type = 2;
++ pub const _DRM_LOCK_FLUSH: Type = 4;
++ pub const _DRM_LOCK_FLUSH_ALL: Type = 8;
++ pub const _DRM_HALT_ALL_QUEUES: Type = 16;
++ pub const _DRM_HALT_CUR_QUEUES: Type = 32;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_lock {
++ pub context: libc::c_int,
++ pub flags: drm_lock_flags::Type,
++}
++impl Default for drm_lock {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_dma_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_DMA_BLOCK: Type = 1;
++ pub const _DRM_DMA_WHILE_LOCKED: Type = 2;
++ pub const _DRM_DMA_PRIORITY: Type = 4;
++ pub const _DRM_DMA_WAIT: Type = 16;
++ pub const _DRM_DMA_SMALLER_OK: Type = 32;
++ pub const _DRM_DMA_LARGER_OK: Type = 64;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_desc {
++ pub count: libc::c_int,
++ pub size: libc::c_int,
++ pub low_mark: libc::c_int,
++ pub high_mark: libc::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: libc::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = libc::c_uint;
++ pub const _DRM_PAGE_ALIGN: Type = 1;
++ pub const _DRM_AGP_BUFFER: Type = 2;
++ pub const _DRM_SG_BUFFER: Type = 4;
++ pub const _DRM_FB_BUFFER: Type = 8;
++ pub const _DRM_PCI_BUFFER_RO: Type = 16;
++}
++impl Default for drm_buf_desc {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_info {
++ pub count: libc::c_int,
++ pub list: *mut drm_buf_desc,
++}
++impl Default for drm_buf_info {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_free {
++ pub count: libc::c_int,
++ pub list: *mut libc::c_int,
++}
++impl Default for drm_buf_free {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_pub {
++ pub idx: libc::c_int,
++ pub total: libc::c_int,
++ pub used: libc::c_int,
++ pub address: *mut libc::c_void,
++}
++impl Default for drm_buf_pub {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_buf_map {
++ pub count: libc::c_int,
++ pub virtual_: *mut libc::c_void,
++ pub list: *mut drm_buf_pub,
++}
++impl Default for drm_buf_map {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_dma {
++ pub context: libc::c_int,
++ pub send_count: libc::c_int,
++ pub send_indices: *mut libc::c_int,
++ pub send_sizes: *mut libc::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: libc::c_int,
++ pub request_size: libc::c_int,
++ pub request_indices: *mut libc::c_int,
++ pub request_sizes: *mut libc::c_int,
++ pub granted_count: libc::c_int,
++}
++impl Default for drm_dma {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++pub mod drm_ctx_flags {
++ pub type Type = libc::c_uint;
++ pub const _DRM_CONTEXT_PRESERVED: Type = 1;
++ pub const _DRM_CONTEXT_2DONLY: Type = 2;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx {
++ pub handle: drm_context_t,
++ pub flags: drm_ctx_flags::Type,
++}
++impl Default for drm_ctx {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_ctx_res {
++ pub count: libc::c_int,
++ pub contexts: *mut drm_ctx,
++}
++impl Default for drm_ctx_res {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_draw {
++ pub handle: drm_drawable_t,
++}
++pub mod drm_drawable_info_type_t {
++ pub type Type = libc::c_uint;
++ pub const DRM_DRAWABLE_CLIPRECTS: Type = 0;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_update_draw {
++ pub handle: drm_drawable_t,
++ pub type_: libc::c_uint,
++ pub num: libc::c_uint,
++ pub data: libc::c_ulonglong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_auth {
++ pub magic: drm_magic_t,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_irq_busid {
++ pub irq: libc::c_int,
++ pub busnum: libc::c_int,
++ pub devnum: libc::c_int,
++ pub funcnum: libc::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = libc::c_uint;
++ pub const _DRM_VBLANK_ABSOLUTE: Type = 0;
++ pub const _DRM_VBLANK_RELATIVE: Type = 1;
++ pub const _DRM_VBLANK_HIGH_CRTC_MASK: Type = 62;
++ pub const _DRM_VBLANK_EVENT: Type = 67108864;
++ pub const _DRM_VBLANK_FLIP: Type = 134217728;
++ pub const _DRM_VBLANK_NEXTONMISS: Type = 268435456;
++ pub const _DRM_VBLANK_SECONDARY: Type = 536870912;
++ pub const _DRM_VBLANK_SIGNAL: Type = 1073741824;
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_request {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub signal: libc::c_ulong,
++}
++impl Default for drm_wait_vblank_request {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_wait_vblank_reply {
++ pub type_: drm_vblank_seq_type::Type,
++ pub sequence: libc::c_uint,
++ pub tval_sec: libc::c_long,
++ pub tval_usec: libc::c_long,
++}
++impl Default for drm_wait_vblank_reply {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Copy, Clone)]
++pub union drm_wait_vblank {
++ pub request: drm_wait_vblank_request,
++ pub reply: drm_wait_vblank_reply,
++}
++impl Default for drm_wait_vblank {
++ fn default() -> Self {
++ let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
++ unsafe {
++ ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
++ s.assume_init()
++ }
++ }
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_modeset_ctl {
++ pub crtc: __u32,
++ pub cmd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_mode {
++ pub mode: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++ pub type_: libc::c_ulong,
++ pub physical: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: libc::c_ulong,
++ pub offset: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: libc::c_int,
++ pub agp_version_minor: libc::c_int,
++ pub mode: libc::c_ulong,
++ pub aperture_base: libc::c_ulong,
++ pub aperture_size: libc::c_ulong,
++ pub memory_allowed: libc::c_ulong,
++ pub memory_used: libc::c_ulong,
++ pub id_vendor: libc::c_ushort,
++ pub id_device: libc::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: libc::c_ulong,
++ pub handle: libc::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: libc::c_int,
++ pub drm_di_minor: libc::c_int,
++ pub drm_dd_major: libc::c_int,
++ pub drm_dd_minor: libc::c_int,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_close {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_flink {
++ pub handle: __u32,
++ pub name: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_gem_open {
++ pub name: __u32,
++ pub handle: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_get_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_client_cap {
++ pub capability: __u64,
++ pub value: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_prime_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_create {
++ pub handle: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_destroy {
++ pub handle: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_handle {
++ pub handle: __u32,
++ pub flags: __u32,
++ pub fd: __s32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_transfer {
++ pub src_handle: __u32,
++ pub dst_handle: __u32,
++ pub src_point: __u64,
++ pub dst_point: __u64,
++ pub flags: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_wait {
++ pub handles: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_wait {
++ pub handles: __u64,
++ pub points: __u64,
++ pub timeout_nsec: __s64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++ pub first_signaled: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_array {
++ pub handles: __u64,
++ pub count_handles: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_syncobj_timeline_array {
++ pub handles: __u64,
++ pub points: __u64,
++ pub count_handles: __u32,
++ pub flags: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_get_sequence {
++ pub crtc_id: __u32,
++ pub active: __u32,
++ pub sequence: __u64,
++ pub sequence_ns: __s64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_crtc_queue_sequence {
++ pub crtc_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_modeinfo {
++ pub clock: __u32,
++ pub hdisplay: __u16,
++ pub hsync_start: __u16,
++ pub hsync_end: __u16,
++ pub htotal: __u16,
++ pub hskew: __u16,
++ pub vdisplay: __u16,
++ pub vsync_start: __u16,
++ pub vsync_end: __u16,
++ pub vtotal: __u16,
++ pub vscan: __u16,
++ pub vrefresh: __u32,
++ pub flags: __u32,
++ pub type_: __u32,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_card_res {
++ pub fb_id_ptr: __u64,
++ pub crtc_id_ptr: __u64,
++ pub connector_id_ptr: __u64,
++ pub encoder_id_ptr: __u64,
++ pub count_fbs: __u32,
++ pub count_crtcs: __u32,
++ pub count_connectors: __u32,
++ pub count_encoders: __u32,
++ pub min_width: __u32,
++ pub max_width: __u32,
++ pub min_height: __u32,
++ pub max_height: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc {
++ pub set_connectors_ptr: __u64,
++ pub count_connectors: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub x: __u32,
++ pub y: __u32,
++ pub gamma_size: __u32,
++ pub mode_valid: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_set_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub crtc_x: __s32,
++ pub crtc_y: __s32,
++ pub crtc_w: __u32,
++ pub crtc_h: __u32,
++ pub src_x: __u32,
++ pub src_y: __u32,
++ pub src_h: __u32,
++ pub src_w: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane {
++ pub plane_id: __u32,
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub possible_crtcs: __u32,
++ pub gamma_size: __u32,
++ pub count_format_types: __u32,
++ pub format_type_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_plane_res {
++ pub plane_id_ptr: __u64,
++ pub count_planes: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_encoder {
++ pub encoder_id: __u32,
++ pub encoder_type: __u32,
++ pub crtc_id: __u32,
++ pub possible_crtcs: __u32,
++ pub possible_clones: __u32,
++}
++pub mod drm_mode_subconnector {
++ pub type Type = libc::c_uint;
++ pub const DRM_MODE_SUBCONNECTOR_Automatic: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_Unknown: Type = 0;
++ pub const DRM_MODE_SUBCONNECTOR_VGA: Type = 1;
++ pub const DRM_MODE_SUBCONNECTOR_DVID: Type = 3;
++ pub const DRM_MODE_SUBCONNECTOR_DVIA: Type = 4;
++ pub const DRM_MODE_SUBCONNECTOR_Composite: Type = 5;
++ pub const DRM_MODE_SUBCONNECTOR_SVIDEO: Type = 6;
++ pub const DRM_MODE_SUBCONNECTOR_Component: Type = 8;
++ pub const DRM_MODE_SUBCONNECTOR_SCART: Type = 9;
++ pub const DRM_MODE_SUBCONNECTOR_DisplayPort: Type = 10;
++ pub const DRM_MODE_SUBCONNECTOR_HDMIA: Type = 11;
++ pub const DRM_MODE_SUBCONNECTOR_Native: Type = 15;
++ pub const DRM_MODE_SUBCONNECTOR_Wireless: Type = 18;
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_connector {
++ pub encoders_ptr: __u64,
++ pub modes_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_modes: __u32,
++ pub count_props: __u32,
++ pub count_encoders: __u32,
++ pub encoder_id: __u32,
++ pub connector_id: __u32,
++ pub connector_type: __u32,
++ pub connector_type_id: __u32,
++ pub connection: __u32,
++ pub mm_width: __u32,
++ pub mm_height: __u32,
++ pub subpixel: __u32,
++ pub pad: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_property_enum {
++ pub value: __u64,
++ pub name: [libc::c_char; 32usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_property {
++ pub values_ptr: __u64,
++ pub enum_blob_ptr: __u64,
++ pub prop_id: __u32,
++ pub flags: __u32,
++ pub name: [libc::c_char; 32usize],
++ pub count_values: __u32,
++ pub count_enum_blobs: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_connector_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub connector_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_get_properties {
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub count_props: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_obj_set_property {
++ pub value: __u64,
++ pub prop_id: __u32,
++ pub obj_id: __u32,
++ pub obj_type: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_blob {
++ pub blob_id: __u32,
++ pub length: __u32,
++ pub data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pitch: __u32,
++ pub bpp: __u32,
++ pub depth: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_cmd2 {
++ pub fb_id: __u32,
++ pub width: __u32,
++ pub height: __u32,
++ pub pixel_format: __u32,
++ pub flags: __u32,
++ pub handles: [__u32; 4usize],
++ pub pitches: [__u32; 4usize],
++ pub offsets: [__u32; 4usize],
++ pub modifier: [__u64; 4usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_fb_dirty_cmd {
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub color: __u32,
++ pub num_clips: __u32,
++ pub clips_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_mode_cmd {
++ pub connector_id: __u32,
++ pub mode: drm_mode_modeinfo,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_cursor2 {
++ pub flags: __u32,
++ pub crtc_id: __u32,
++ pub x: __s32,
++ pub y: __s32,
++ pub width: __u32,
++ pub height: __u32,
++ pub handle: __u32,
++ pub hot_x: __s32,
++ pub hot_y: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_lut {
++ pub crtc_id: __u32,
++ pub gamma_size: __u32,
++ pub red: __u64,
++ pub green: __u64,
++ pub blue: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_ctm {
++ pub matrix: [__u64; 9usize],
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_color_lut {
++ pub red: __u16,
++ pub green: __u16,
++ pub blue: __u16,
++ pub reserved: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct hdr_metadata_infoframe__bindgen_ty_1 {
++ pub x: __u16,
++ pub y: __u16,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub reserved: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_crtc_page_flip_target {
++ pub crtc_id: __u32,
++ pub fb_id: __u32,
++ pub flags: __u32,
++ pub sequence: __u32,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_dumb {
++ pub height: __u32,
++ pub width: __u32,
++ pub bpp: __u32,
++ pub flags: __u32,
++ pub handle: __u32,
++ pub pitch: __u32,
++ pub size: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_map_dumb {
++ pub handle: __u32,
++ pub pad: __u32,
++ pub offset: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_dumb {
++ pub handle: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_atomic {
++ pub flags: __u32,
++ pub count_objs: __u32,
++ pub objs_ptr: __u64,
++ pub count_props_ptr: __u64,
++ pub props_ptr: __u64,
++ pub prop_values_ptr: __u64,
++ pub reserved: __u64,
++ pub user_data: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier_blob {
++ pub version: __u32,
++ pub flags: __u32,
++ pub count_formats: __u32,
++ pub formats_offset: __u32,
++ pub count_modifiers: __u32,
++ pub modifiers_offset: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_format_modifier {
++ pub formats: __u64,
++ pub offset: __u32,
++ pub pad: __u32,
++ pub modifier: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_blob {
++ pub data: __u64,
++ pub length: __u32,
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_destroy_blob {
++ pub blob_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_create_lease {
++ pub object_ids: __u64,
++ pub object_count: __u32,
++ pub flags: __u32,
++ pub lessee_id: __u32,
++ pub fd: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_list_lessees {
++ pub count_lessees: __u32,
++ pub pad: __u32,
++ pub lessees_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_get_lease {
++ pub count_objects: __u32,
++ pub pad: __u32,
++ pub objects_ptr: __u64,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_revoke_lease {
++ pub lessee_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_mode_rect {
++ pub x1: __s32,
++ pub y1: __s32,
++ pub x2: __s32,
++ pub y2: __s32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event {
++ pub type_: __u32,
++ pub length: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_vblank {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub tv_sec: __u32,
++ pub tv_usec: __u32,
++ pub sequence: __u32,
++ pub crtc_id: __u32,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_event_crtc_sequence {
++ pub base: drm_event,
++ pub user_data: __u64,
++ pub time_ns: __s64,
++ pub sequence: __u64,
++}
++pub type drm_clip_rect_t = drm_clip_rect;
++pub type drm_drawable_info_t = drm_drawable_info;
++pub type drm_tex_region_t = drm_tex_region;
++pub type drm_hw_lock_t = drm_hw_lock;
++pub type drm_version_t = drm_version;
++pub type drm_unique_t = drm_unique;
++pub type drm_list_t = drm_list;
++pub type drm_block_t = drm_block;
++pub type drm_control_t = drm_control;
++pub use self::drm_map_flags::Type as drm_map_flags_t;
++pub use self::drm_map_type::Type as drm_map_type_t;
++pub type drm_ctx_priv_map_t = drm_ctx_priv_map;
++pub type drm_map_t = drm_map;
++pub type drm_client_t = drm_client;
++pub use self::drm_stat_type::Type as drm_stat_type_t;
++pub type drm_stats_t = drm_stats;
++pub use self::drm_lock_flags::Type as drm_lock_flags_t;
++pub type drm_lock_t = drm_lock;
++pub use self::drm_dma_flags::Type as drm_dma_flags_t;
++pub type drm_buf_desc_t = drm_buf_desc;
++pub type drm_buf_info_t = drm_buf_info;
++pub type drm_buf_free_t = drm_buf_free;
++pub type drm_buf_pub_t = drm_buf_pub;
++pub type drm_buf_map_t = drm_buf_map;
++pub type drm_dma_t = drm_dma;
++pub type drm_wait_vblank_t = drm_wait_vblank;
++pub type drm_agp_mode_t = drm_agp_mode;
++pub use self::drm_ctx_flags::Type as drm_ctx_flags_t;
++pub type drm_ctx_t = drm_ctx;
++pub type drm_ctx_res_t = drm_ctx_res;
++pub type drm_draw_t = drm_draw;
++pub type drm_update_draw_t = drm_update_draw;
++pub type drm_auth_t = drm_auth;
++pub type drm_irq_busid_t = drm_irq_busid;
++pub use self::drm_vblank_seq_type::Type as drm_vblank_seq_type_t;
++pub type drm_agp_buffer_t = drm_agp_buffer;
++pub type drm_agp_binding_t = drm_agp_binding;
++pub type drm_agp_info_t = drm_agp_info;
++pub type drm_scatter_gather_t = drm_scatter_gather;
++pub type drm_set_version_t = drm_set_version;
++pub const DRM_MODE_PROP_SIGNED_RANGE: libc::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: libc::c_uint = 64;
diff --git a/x11/xdg-desktop-portal-luminous/files/patch-pipewire-i386 b/x11/xdg-desktop-portal-luminous/files/patch-pipewire-i386
new file mode 100644
index 000000000000..45037451bfc2
--- /dev/null
+++ b/x11/xdg-desktop-portal-luminous/files/patch-pipewire-i386
@@ -0,0 +1,53 @@
+https://gitlab.freedesktop.org/pipewire/pipewire-rs/-/commit/ff923ee9dfe0
+
+error[E0308]: mismatched types
+ --> cargo-crates/libspa-0.7.2/src/pod/parser.rs:180:75
+ |
+180 | let res = spa_sys::spa_pod_parser_get_long(self.as_raw_ptr(), long.as_mut_ptr());
+ | -------------------------------- ^^^^^^^^^^^^^^^^^ expected `*mut i64`, found `*mut i32`
+ | |
+ | arguments to this function are incorrect
+ |
+ = note: expected raw pointer `*mut i64`
+ found raw pointer `*mut i32`
+note: function defined here
+ --> cargo-crates/libspa-sys-0.7.2/src/pod/parser.rs:61:12
+ |
+61 | pub fn spa_pod_parser_get_long(parser: *mut spa_pod_parser, value: *mut i64) -> c_int;
+ | ^^^^^^^^^^^^^^^^^^^^^^^
+
+--- cargo-crates/libspa-0.7.2/src/pod/parser.rs.orig 2006-07-24 01:21:28 UTC
++++ cargo-crates/libspa-0.7.2/src/pod/parser.rs
+@@ -2,7 +2,7 @@ use std::{
+ // SPDX-License-Identifier: MIT
+
+ use std::{
+- ffi::{c_char, c_double, c_float, c_int, c_long, c_void, CStr},
++ ffi::{c_char, c_double, c_float, c_void, CStr},
+ marker::PhantomData,
+ mem::MaybeUninit,
+ };
+@@ -162,9 +162,9 @@ impl<'d> Parser<'d> {
+ }
+ }
+
+- pub fn get_int(&mut self) -> Result<c_int, Errno> {
++ pub fn get_int(&mut self) -> Result<i32, Errno> {
+ unsafe {
+- let mut int: MaybeUninit<c_int> = MaybeUninit::uninit();
++ let mut int: MaybeUninit<i32> = MaybeUninit::uninit();
+ let res = spa_sys::spa_pod_parser_get_int(self.as_raw_ptr(), int.as_mut_ptr());
+ if res >= 0 {
+ Ok(int.assume_init())
+@@ -174,9 +174,9 @@ impl<'d> Parser<'d> {
+ }
+ }
+
+- pub fn get_long(&mut self) -> Result<c_long, Errno> {
++ pub fn get_long(&mut self) -> Result<i64, Errno> {
+ unsafe {
+- let mut long: MaybeUninit<c_long> = MaybeUninit::uninit();
++ let mut long: MaybeUninit<i64> = MaybeUninit::uninit();
+ let res = spa_sys::spa_pod_parser_get_long(self.as_raw_ptr(), long.as_mut_ptr());
+ if res >= 0 {
+ Ok(long.assume_init())
diff --git a/x11/xdg-desktop-portal-luminous/files/patch-pipewire_init b/x11/xdg-desktop-portal-luminous/files/patch-pipewire_init
new file mode 100644
index 000000000000..cfb035de43d9
--- /dev/null
+++ b/x11/xdg-desktop-portal-luminous/files/patch-pipewire_init
@@ -0,0 +1,59 @@
+Chase ABI from multimedia/pipewire/files/patch-src_pipewire_pipewire_init
+
+https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1819
+
+error[E0425]: cannot find function `pw_init` in crate `pw_sys`
+ --> cargo-crates/pipewire-0.4.1/src/lib.rs:156:49
+ |
+156 | INITIALIZED.get_or_init(|| unsafe { pw_sys::pw_init(ptr::null_mut(), ptr::null_mut()) });
+ | ^^^^^^^ not found in `pw_sys`
+
+error[E0425]: cannot find function `pw_deinit` in crate `pw_sys`
+ --> cargo-crates/pipewire-0.4.1/src/lib.rs:165:13
+ |
+165 | pw_sys::pw_deinit()
+ | ^^^^^^^^^ not found in `pw_sys`
+
+--- cargo-crates/pipewire-0.7.2/src/lib.rs.orig 2006-07-24 01:21:28 UTC
++++ cargo-crates/pipewire-0.7.2/src/lib.rs
+@@ -152,7 +152,7 @@ pub fn init() {
+ pub fn init() {
+ use once_cell::sync::OnceCell;
+ static INITIALIZED: OnceCell<()> = OnceCell::new();
+- INITIALIZED.get_or_init(|| unsafe { pw_sys::pw_init(ptr::null_mut(), ptr::null_mut()) });
++ INITIALIZED.get_or_init(|| unsafe { pw_sys::pipewire_init(ptr::null_mut(), ptr::null_mut()) });
+ }
+
+ /// Deinitialize PipeWire
+@@ -161,7 +161,7 @@ pub unsafe fn deinit() {
+ /// This must only be called once during the lifetime of the process, once no PipeWire threads
+ /// are running anymore and all PipeWire resources are released.
+ pub unsafe fn deinit() {
+- pw_sys::pw_deinit()
++ pw_sys::pipewire_deinit()
+ }
+
+ #[cfg(test)]
+--- cargo-crates/pipewire-sys-0.7.2/build.rs.orig 2006-07-24 01:21:28 UTC
++++ cargo-crates/pipewire-sys-0.7.2/build.rs
+@@ -19,6 +19,7 @@ fn main() {
+ // included header files changed.
+ .parse_callbacks(Box::new(bindgen::CargoCallbacks))
+ .size_t_is_usize(true)
++ .allowlist_function("pipewire_.*")
+ .allowlist_function("pw_.*")
+ .allowlist_type("pw_.*")
+ .allowlist_var("pw_.*")
+--- cargo-crates/pipewire-sys-0.7.2/src/lib.rs.orig 2006-07-24 01:21:28 UTC
++++ cargo-crates/pipewire-sys-0.7.2/src/lib.rs
+@@ -20,8 +20,8 @@ mod tests {
+ #[test]
+ fn init() {
+ unsafe {
+- pw_init(std::ptr::null_mut(), std::ptr::null_mut());
+- pw_deinit();
++ pipewire_init(std::ptr::null_mut(), std::ptr::null_mut());
++ pipewire_deinit();
+ }
+ }
+ }
diff --git a/x11/xdg-desktop-portal-luminous/pkg-descr b/x11/xdg-desktop-portal-luminous/pkg-descr
new file mode 100644
index 000000000000..59322b91680b
--- /dev/null
+++ b/x11/xdg-desktop-portal-luminous/pkg-descr
@@ -0,0 +1,3 @@
+An alternative to xdg-desktop-portal-wlr for wlroots compositors.
+This project is a stand alone binary and does not depend on grim.
+libwayshot is used as the screencopy backend to enable screenshots.