aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2024-01-29 00:48:40 +0000
committerJan Beich <jbeich@FreeBSD.org>2024-02-01 14:00:05 +0000
commit9302d938570172032b9ea137d0fd3fe7c2d44fc8 (patch)
tree5e56821651e5c328adae7be83f3a7a9ecdb61e3a
parentd646a3df926badd4ab3c0039eef5e9d8f693e8cb (diff)
downloadports-9302d938570172032b9ea137d0fd3fe7c2d44fc8.tar.gz
ports-9302d938570172032b9ea137d0fd3fe7c2d44fc8.zip
x11-wm/cosmic-comp: add new port
Compositor for the COSMIC desktop environment https://github.com/pop-os/cosmic-comp
-rw-r--r--x11-wm/Makefile1
-rw-r--r--x11-wm/cosmic-comp/Makefile50
-rw-r--r--x11-wm/cosmic-comp/Makefile.crates557
-rw-r--r--x11-wm/cosmic-comp/distinfo1119
-rw-r--r--x11-wm/cosmic-comp/files/patch-Cargo.toml19
-rw-r--r--x11-wm/cosmic-comp/files/patch-drm-sys6727
-rw-r--r--x11-wm/cosmic-comp/files/patch-no-systemd28
-rw-r--r--x11-wm/cosmic-comp/pkg-descr1
8 files changed, 8502 insertions, 0 deletions
diff --git a/x11-wm/Makefile b/x11-wm/Makefile
index 3d574f186738..d06b2bbf55f4 100644
--- a/x11-wm/Makefile
+++ b/x11-wm/Makefile
@@ -20,6 +20,7 @@
SUBDIR += compiz-plugins-main
SUBDIR += compiz-plugins-unsupported
SUBDIR += compton
+ SUBDIR += cosmic-comp
SUBDIR += ctwm
SUBDIR += cwm
SUBDIR += deforaos-panel
diff --git a/x11-wm/cosmic-comp/Makefile b/x11-wm/cosmic-comp/Makefile
new file mode 100644
index 000000000000..4ce936bc22e7
--- /dev/null
+++ b/x11-wm/cosmic-comp/Makefile
@@ -0,0 +1,50 @@
+PORTNAME= cosmic-comp
+PORTVERSION= s20240129
+CATEGORIES= x11-wm wayland
+
+MAINTAINER= jbeich@FreeBSD.org
+COMMENT= Compositor for the COSMIC desktop environment
+WWW= https://github.com/pop-os/cosmic-comp
+
+LICENSE= GPLv3+
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+LIB_DEPENDS= libudev.so:devel/libudev-devd \
+ libseat.so:sysutils/seatd \
+ libinput.so:x11/libinput \
+ libxkbcommon.so:x11/libxkbcommon
+RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri \
+ vulkan-loader>0:graphics/vulkan-loader \
+ xwayland-devel>0:x11-servers/xwayland-devel
+
+USES= cargo gl
+USE_GITHUB= yes
+USE_GL= gbm
+GH_ACCOUNT= pop-os
+GH_TAGNAME= ce74675
+GH_TUPLE= pop-os:iced:0.4.2-1768-g6115280d:iced/../${WRKSRC_crate_iced:T}/iced
+CARGO_FEATURES= --no-default-features # disable systemd
+PLIST_FILES= bin/${PORTNAME} \
+ share/wayland-sessions/${PORTNAME:S/-comp//}.desktop \
+
+post-patch:
+# XXX Strip double / to help "make cargo-crates"
+ @${REINPLACE_CMD} -e 's,\(smithay\)//,\1/,' \
+ ${WRKSRC}/Cargo.lock
+# Respect PREFIX for system-wide config
+ @${REINPLACE_CMD} -e 's,/etc,${PREFIX}&,' \
+ ${WRKSRC}/src/config/mod.rs
+# /sys by default is a symlink to /usr/src/sys
+ @${REINPLACE_CMD} -e 's,/sys,${LINUXBASE}&,' \
+ ${WRKSRC}/src/debug.rs
+
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+# Install extras similar to ${WRKSRC}/Makefile
+.for f in data/*.desktop
+ ${MKDIR} ${STAGEDIR}${PREFIX}/${PLIST_FILES:M*.${f:E}:H}
+ ${INSTALL_DATA} ${WRKSRC}/${f} \
+ ${STAGEDIR}${PREFIX}/${PLIST_FILES:M*.${f:E}}
+.endfor
+
+.include <bsd.port.mk>
diff --git a/x11-wm/cosmic-comp/Makefile.crates b/x11-wm/cosmic-comp/Makefile.crates
new file mode 100644
index 000000000000..8f7eb01187d3
--- /dev/null
+++ b/x11-wm/cosmic-comp/Makefile.crates
@@ -0,0 +1,557 @@
+CARGO_CRATES= ab_glyph-0.2.23 \
+ ab_glyph_rasterizer-0.1.8 \
+ accesskit-0.11.2 \
+ addr2line-0.21.0 \
+ adler-1.0.2 \
+ ahash-0.7.7 \
+ ahash-0.8.7 \
+ aho-corasick-1.1.2 \
+ aliasable-0.1.3 \
+ allocator-api2-0.2.16 \
+ almost-0.2.0 \
+ android-activity-0.5.1 \
+ android-properties-0.2.2 \
+ android_system_properties-0.1.5 \
+ anyhow-1.0.79 \
+ appendlist-1.4.0 \
+ apply-0.3.0 \
+ approx-0.4.0 \
+ approx-0.5.1 \
+ arc-swap-1.6.0 \
+ arrayref-0.3.7 \
+ arrayvec-0.7.4 \
+ as-raw-xcb-connection-1.0.1 \
+ ash-0.37.3+1.3.251 \
+ async-task-4.7.0 \
+ atomic-waker-1.1.2 \
+ autocfg-1.1.0 \
+ backtrace-0.3.69 \
+ base64-0.13.1 \
+ base64-0.21.7 \
+ bincode-1.3.3 \
+ bit-set-0.5.3 \
+ bit-vec-0.6.3 \
+ bit_field-0.10.2 \
+ bitflags-1.3.2 \
+ bitflags-2.4.2 \
+ block-0.1.6 \
+ block-buffer-0.10.4 \
+ block-sys-0.2.1 \
+ block2-0.3.0 \
+ bumpalo-3.14.0 \
+ bytemuck-1.14.0 \
+ bytemuck_derive-1.5.0 \
+ byteorder-1.5.0 \
+ bytes-1.5.0 \
+ calloop-0.12.4 \
+ calloop-wayland-source-0.2.0 \
+ cc-1.0.83 \
+ cesu8-1.1.0 \
+ cfg-if-1.0.0 \
+ cfg_aliases-0.1.1 \
+ cgmath-0.18.0 \
+ cocoa-0.25.0 \
+ cocoa-foundation-0.1.2 \
+ codespan-reporting-0.11.1 \
+ color_quant-1.1.0 \
+ com-rs-0.2.1 \
+ combine-4.6.6 \
+ concurrent-queue-2.4.0 \
+ core-foundation-0.9.4 \
+ core-foundation-sys-0.8.6 \
+ core-graphics-0.23.1 \
+ core-graphics-types-0.1.3 \
+ cpufeatures-0.2.12 \
+ crc32fast-1.3.2 \
+ crossbeam-channel-0.5.11 \
+ crossbeam-deque-0.8.5 \
+ crossbeam-epoch-0.9.18 \
+ crossbeam-utils-0.8.19 \
+ crunchy-0.2.2 \
+ crypto-common-0.1.6 \
+ css-color-0.2.5 \
+ csscolorparser-0.6.2 \
+ ctor-0.2.6 \
+ cursor-icon-1.1.0 \
+ d3d12-0.7.0 \
+ darling-0.20.3 \
+ darling_core-0.20.3 \
+ darling_macro-0.20.3 \
+ dashmap-5.5.3 \
+ data-url-0.2.0 \
+ data-url-0.3.1 \
+ deranged-0.3.11 \
+ derive_setters-0.1.6 \
+ digest-0.10.7 \
+ dirs-4.0.0 \
+ dirs-5.0.1 \
+ dirs-sys-0.3.7 \
+ dirs-sys-0.4.1 \
+ dispatch-0.2.0 \
+ displaydoc-0.2.4 \
+ dlib-0.5.2 \
+ dlv-list-0.3.0 \
+ downcast-rs-1.2.0 \
+ drm-0.10.0 \
+ drm-0.11.1 \
+ drm-ffi-0.6.0 \
+ drm-ffi-0.7.1 \
+ drm-fourcc-2.2.0 \
+ drm-sys-0.5.0 \
+ drm-sys-0.6.1 \
+ ecolor-0.23.0 \
+ edid-rs-0.1.0 \
+ egui-0.23.0 \
+ egui_extras-0.23.0 \
+ egui_glow-0.23.0 \
+ egui_plot-0.23.0 \
+ either-1.9.0 \
+ emath-0.23.0 \
+ encoding_rs-0.8.33 \
+ enum-map-2.7.3 \
+ enum-map-derive-0.17.0 \
+ enumn-0.1.13 \
+ epaint-0.23.0 \
+ equivalent-1.0.1 \
+ errno-0.3.8 \
+ etagere-0.2.10 \
+ euclid-0.22.9 \
+ exr-1.6.4 \
+ fast-srgb8-1.0.0 \
+ fastrand-2.0.1 \
+ fdeflate-0.3.4 \
+ filetime-0.2.23 \
+ find-crate-0.6.3 \
+ flate2-1.0.28 \
+ float-cmp-0.9.0 \
+ float_next_after-1.0.0 \
+ fluent-0.16.0 \
+ fluent-bundle-0.15.2 \
+ fluent-langneg-0.13.0 \
+ fluent-syntax-0.11.0 \
+ flume-0.10.14 \
+ flume-0.11.0 \
+ fnv-1.0.7 \
+ fontconfig-parser-0.5.3 \
+ fontdb-0.16.0 \
+ foreign-types-0.5.0 \
+ foreign-types-macros-0.2.3 \
+ foreign-types-shared-0.3.1 \
+ form_urlencoded-1.2.1 \
+ fraction-0.14.0 \
+ freedesktop-icons-0.2.4 \
+ fsevent-sys-4.1.0 \
+ futures-0.3.30 \
+ futures-channel-0.3.30 \
+ futures-core-0.3.30 \
+ futures-executor-0.3.30 \
+ futures-io-0.3.30 \
+ futures-macro-0.3.30 \
+ futures-sink-0.3.30 \
+ futures-task-0.3.30 \
+ futures-util-0.3.30 \
+ gbm-0.14.0 \
+ gbm-sys-0.3.0 \
+ generic-array-0.14.7 \
+ gethostname-0.3.0 \
+ gethostname-0.4.3 \
+ getrandom-0.2.12 \
+ gif-0.12.0 \
+ gimli-0.28.1 \
+ gl_generator-0.14.0 \
+ glam-0.24.2 \
+ glow-0.12.3 \
+ glow-0.13.1 \
+ glutin_wgl_sys-0.5.0 \
+ gpu-alloc-0.6.0 \
+ gpu-alloc-types-0.3.0 \
+ gpu-allocator-0.23.0 \
+ gpu-descriptor-0.2.4 \
+ gpu-descriptor-types-0.1.2 \
+ grid-0.11.0 \
+ guillotiere-0.6.2 \
+ half-2.3.1 \
+ hashbrown-0.12.3 \
+ hashbrown-0.14.3 \
+ hassle-rs-0.10.0 \
+ heck-0.4.1 \
+ hermit-abi-0.3.4 \
+ hexf-parse-0.2.1 \
+ hmac-0.12.1 \
+ home-0.5.9 \
+ i18n-config-0.4.6 \
+ i18n-embed-0.14.1 \
+ i18n-embed-fl-0.7.0 \
+ i18n-embed-impl-0.8.3 \
+ icrate-0.0.4 \
+ ident_case-1.0.1 \
+ idna-0.5.0 \
+ image-0.24.8 \
+ imagesize-0.10.1 \
+ imagesize-0.12.0 \
+ indexmap-1.9.3 \
+ indexmap-2.1.0 \
+ inotify-0.9.6 \
+ inotify-sys-0.1.5 \
+ input-0.8.3 \
+ input-sys-1.18.0 \
+ instant-0.1.12 \
+ intl-memoizer-0.5.1 \
+ intl_pluralrules-7.0.2 \
+ io-lifetimes-1.0.11 \
+ io-lifetimes-2.0.3 \
+ itoa-1.0.10 \
+ jni-0.21.1 \
+ jni-sys-0.3.0 \
+ jobserver-0.1.27 \
+ jpeg-decoder-0.3.1 \
+ js-sys-0.3.67 \
+ kamadak-exif-0.5.5 \
+ keyframe-1.1.1 \
+ khronos-egl-6.0.0 \
+ khronos_api-3.1.0 \
+ kqueue-1.0.8 \
+ kqueue-sys-1.0.4 \
+ kurbo-0.8.3 \
+ kurbo-0.9.5 \
+ lazy_static-1.4.0 \
+ lebe-0.5.2 \
+ libc-0.2.152 \
+ libloading-0.7.4 \
+ libloading-0.8.1 \
+ libm-0.2.8 \
+ libredox-0.0.1 \
+ libredox-0.0.2 \
+ libseat-0.2.1 \
+ libseat-sys-0.1.7 \
+ libsystemd-0.7.0 \
+ libudev-sys-0.1.4 \
+ linux-raw-sys-0.4.13 \
+ linux-raw-sys-0.6.4 \
+ locale_config-0.3.0 \
+ lock_api-0.4.11 \
+ log-0.4.20 \
+ log-panics-2.1.0 \
+ lru-0.12.1 \
+ lyon-1.0.1 \
+ lyon_algorithms-1.0.4 \
+ lyon_geom-1.0.5 \
+ lyon_path-1.0.4 \
+ lyon_tessellation-1.0.13 \
+ lz4_flex-0.11.2 \
+ malloc_buf-0.0.6 \
+ matchers-0.1.0 \
+ memchr-2.7.1 \
+ memmap2-0.8.0 \
+ memmap2-0.9.3 \
+ memoffset-0.6.5 \
+ memoffset-0.7.1 \
+ memoffset-0.9.0 \
+ metal-0.27.0 \
+ mime-0.3.17 \
+ mime_guess-2.0.4 \
+ minimal-lexical-0.2.1 \
+ miniz_oxide-0.7.1 \
+ mint-0.5.9 \
+ mio-0.8.10 \
+ mutate_once-0.1.1 \
+ naga-0.14.2 \
+ nanorand-0.7.0 \
+ natord-1.0.9 \
+ ndk-0.8.0 \
+ ndk-context-0.1.1 \
+ ndk-sys-0.5.0+25.2.9519653 \
+ nix-0.26.4 \
+ nix-0.27.1 \
+ nohash-hasher-0.2.0 \
+ nom-7.1.3 \
+ notify-6.1.1 \
+ nu-ansi-term-0.46.0 \
+ num-0.4.1 \
+ num-bigint-0.4.4 \
+ num-complex-0.4.4 \
+ num-integer-0.1.45 \
+ num-iter-0.1.43 \
+ num-rational-0.4.1 \
+ num-traits-0.2.17 \
+ num_cpus-1.16.0 \
+ num_enum-0.7.2 \
+ num_enum_derive-0.7.2 \
+ num_threads-0.1.6 \
+ objc-0.2.7 \
+ objc-foundation-0.1.1 \
+ objc-sys-0.3.2 \
+ objc2-0.4.1 \
+ objc2-encode-3.0.0 \
+ objc_exception-0.1.2 \
+ objc_id-0.1.1 \
+ object-0.32.2 \
+ once_cell-1.19.0 \
+ option-ext-0.2.0 \
+ orbclient-0.3.47 \
+ ordered-float-4.2.0 \
+ ordered-multimap-0.4.3 \
+ ouroboros-0.17.2 \
+ ouroboros_macro-0.17.2 \
+ overload-0.1.1 \
+ owned_ttf_parser-0.20.0 \
+ palette-0.7.3 \
+ palette_derive-0.7.3 \
+ parking_lot-0.11.2 \
+ parking_lot-0.12.1 \
+ parking_lot_core-0.8.6 \
+ parking_lot_core-0.9.9 \
+ paste-1.0.14 \
+ percent-encoding-2.3.1 \
+ 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 \
+ pkg-config-0.3.29 \
+ png-0.17.11 \
+ polling-3.3.2 \
+ powerfmt-0.2.0 \
+ ppv-lite86-0.2.17 \
+ presser-0.3.1 \
+ proc-macro-crate-3.1.0 \
+ proc-macro-error-1.0.4 \
+ proc-macro-error-attr-1.0.4 \
+ proc-macro2-1.0.76 \
+ profiling-1.0.13 \
+ profiling-procmacros-1.0.13 \
+ puffin-0.17.0 \
+ puffin_egui-0.23.0 \
+ qoi-0.4.1 \
+ quick-xml-0.30.0 \
+ quote-1.0.35 \
+ rand-0.8.5 \
+ rand_chacha-0.3.1 \
+ rand_core-0.6.4 \
+ range-alloc-0.1.3 \
+ rangemap-1.4.0 \
+ raw-window-handle-0.5.2 \
+ raw-window-handle-0.6.0 \
+ rayon-1.8.1 \
+ rayon-core-1.12.1 \
+ rctree-0.5.0 \
+ redox_syscall-0.2.16 \
+ redox_syscall-0.3.5 \
+ redox_syscall-0.4.1 \
+ redox_users-0.4.4 \
+ regex-1.10.2 \
+ regex-automata-0.1.10 \
+ regex-automata-0.4.3 \
+ regex-syntax-0.6.29 \
+ regex-syntax-0.8.2 \
+ renderdoc-0.11.0 \
+ renderdoc-sys-1.0.0 \
+ resvg-0.28.0 \
+ resvg-0.37.0 \
+ rgb-0.8.37 \
+ ron-0.8.1 \
+ roxmltree-0.15.1 \
+ roxmltree-0.18.1 \
+ roxmltree-0.19.0 \
+ rust-embed-8.2.0 \
+ rust-embed-impl-8.2.0 \
+ rust-embed-utils-8.2.0 \
+ rust-ini-0.18.0 \
+ rustc-demangle-0.1.23 \
+ rustc-hash-1.1.0 \
+ rustix-0.38.30 \
+ rustybuzz-0.12.1 \
+ ryu-1.0.16 \
+ same-file-1.0.6 \
+ sanitize-filename-0.5.0 \
+ scan_fmt-0.2.6 \
+ scoped-tls-1.0.1 \
+ scopeguard-1.2.0 \
+ self_cell-0.10.3 \
+ self_cell-1.0.3 \
+ sendfd-0.4.3 \
+ serde-1.0.195 \
+ serde_derive-1.0.195 \
+ serde_json-1.0.111 \
+ serde_spanned-0.6.5 \
+ sha2-0.10.8 \
+ sharded-slab-0.1.7 \
+ simd-adler32-0.3.7 \
+ simplecss-0.2.1 \
+ siphasher-0.3.11 \
+ slab-0.4.9 \
+ slotmap-1.0.7 \
+ smallvec-1.13.1 \
+ smithay-client-toolkit-0.18.0 \
+ smol_str-0.2.1 \
+ snowflake-1.3.0 \
+ spin-0.9.8 \
+ spirv-0.2.0+1.5.4 \
+ static_assertions-1.1.0 \
+ strict-num-0.1.1 \
+ strsim-0.10.0 \
+ subtle-2.5.0 \
+ svg_fmt-0.4.1 \
+ svgtypes-0.8.2 \
+ svgtypes-0.13.0 \
+ swash-0.1.8 \
+ syn-1.0.109 \
+ syn-2.0.48 \
+ sys-locale-0.3.1 \
+ tempfile-3.9.0 \
+ termcolor-1.4.1 \
+ thiserror-1.0.56 \
+ thiserror-impl-1.0.56 \
+ thread_local-1.1.7 \
+ tiff-0.9.1 \
+ time-0.3.31 \
+ time-core-0.1.2 \
+ time-macros-0.2.16 \
+ tiny-skia-0.8.4 \
+ tiny-skia-0.11.3 \
+ tiny-skia-path-0.8.4 \
+ tiny-skia-path-0.11.3 \
+ tiny-xlib-0.2.2 \
+ tinystr-0.7.5 \
+ tinyvec-1.6.0 \
+ tinyvec_macros-0.1.1 \
+ toml-0.5.11 \
+ toml-0.8.8 \
+ toml_datetime-0.6.5 \
+ toml_edit-0.21.0 \
+ tracing-0.1.40 \
+ tracing-attributes-0.1.27 \
+ tracing-core-0.1.32 \
+ tracing-journald-0.3.0 \
+ tracing-log-0.2.0 \
+ tracing-subscriber-0.3.18 \
+ ttf-parser-0.20.0 \
+ type-map-0.4.0 \
+ typenum-1.17.0 \
+ udev-0.7.0 \
+ udev-0.8.0 \
+ unic-langid-0.9.4 \
+ unic-langid-impl-0.9.4 \
+ unicase-2.7.0 \
+ unicode-bidi-0.3.15 \
+ unicode-bidi-mirroring-0.1.0 \
+ unicode-ccc-0.1.2 \
+ unicode-ident-1.0.12 \
+ unicode-linebreak-0.1.5 \
+ unicode-normalization-0.1.22 \
+ unicode-properties-0.1.1 \
+ unicode-script-0.5.5 \
+ unicode-segmentation-1.10.1 \
+ unicode-vo-0.1.0 \
+ unicode-width-0.1.11 \
+ unicode-xid-0.2.4 \
+ url-2.5.0 \
+ usvg-0.28.0 \
+ usvg-0.37.0 \
+ usvg-parser-0.37.0 \
+ usvg-text-layout-0.37.0 \
+ usvg-tree-0.37.0 \
+ uuid-1.7.0 \
+ valuable-0.1.0 \
+ vec1-1.10.1 \
+ version_check-0.9.4 \
+ walkdir-2.4.0 \
+ wasi-0.11.0+wasi-snapshot-preview1 \
+ wasm-bindgen-0.2.90 \
+ wasm-bindgen-backend-0.2.90 \
+ wasm-bindgen-futures-0.4.40 \
+ wasm-bindgen-macro-0.2.90 \
+ wasm-bindgen-macro-support-0.2.90 \
+ wasm-bindgen-shared-0.2.90 \
+ wasm-timer-0.2.5 \
+ wayland-backend-0.3.2 \
+ wayland-client-0.31.1 \
+ wayland-csd-frame-0.3.0 \
+ wayland-cursor-0.31.0 \
+ wayland-egl-0.32.0 \
+ wayland-protocols-0.31.0 \
+ wayland-protocols-misc-0.2.0 \
+ wayland-protocols-plasma-0.2.0 \
+ wayland-protocols-wlr-0.2.0 \
+ wayland-scanner-0.31.0 \
+ wayland-server-0.31.0 \
+ wayland-sys-0.31.1 \
+ web-sys-0.3.64 \
+ web-time-0.2.4 \
+ weezl-0.1.7 \
+ wgpu-0.18.0 \
+ wgpu-core-0.18.1 \
+ wgpu-hal-0.18.1 \
+ wgpu-types-0.18.0 \
+ widestring-1.0.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.51.1 \
+ windows-core-0.51.1 \
+ windows-sys-0.45.0 \
+ windows-sys-0.48.0 \
+ windows-sys-0.52.0 \
+ windows-targets-0.42.2 \
+ windows-targets-0.48.5 \
+ windows-targets-0.52.0 \
+ windows_aarch64_gnullvm-0.42.2 \
+ windows_aarch64_gnullvm-0.48.5 \
+ windows_aarch64_gnullvm-0.52.0 \
+ windows_aarch64_msvc-0.42.2 \
+ windows_aarch64_msvc-0.48.5 \
+ windows_aarch64_msvc-0.52.0 \
+ windows_i686_gnu-0.42.2 \
+ windows_i686_gnu-0.48.5 \
+ windows_i686_gnu-0.52.0 \
+ windows_i686_msvc-0.42.2 \
+ windows_i686_msvc-0.48.5 \
+ windows_i686_msvc-0.52.0 \
+ windows_x86_64_gnu-0.42.2 \
+ windows_x86_64_gnu-0.48.5 \
+ windows_x86_64_gnu-0.52.0 \
+ windows_x86_64_gnullvm-0.42.2 \
+ windows_x86_64_gnullvm-0.48.5 \
+ windows_x86_64_gnullvm-0.52.0 \
+ windows_x86_64_msvc-0.42.2 \
+ windows_x86_64_msvc-0.48.5 \
+ windows_x86_64_msvc-0.52.0 \
+ winit-0.29.10 \
+ winnow-0.5.34 \
+ wio-0.2.2 \
+ x11-dl-2.21.0 \
+ x11rb-0.12.0 \
+ x11rb-0.13.0 \
+ x11rb-protocol-0.12.0 \
+ x11rb-protocol-0.13.0 \
+ xcursor-0.3.5 \
+ xdg-2.5.2 \
+ xdg-user-0.2.1 \
+ xkbcommon-0.7.0 \
+ xkbcommon-dl-0.4.1 \
+ xkeysym-0.2.0 \
+ xml-rs-0.8.19 \
+ xmlparser-0.13.6 \
+ xmlwriter-0.1.0 \
+ xxhash-rust-0.8.8 \
+ yazi-0.1.6 \
+ zeno-0.2.3 \
+ zerocopy-0.7.32 \
+ zerocopy-derive-0.7.32 \
+ zune-inflate-0.2.54 \
+ glyphon@git+https://github.com/jackpot51/glyphon.git\#abb70c0fda8cf1a5dfc314c1c778103d7ba951e6 \
+ taffy@git+https://github.com/DioxusLabs/taffy?rev=7781c70\#7781c70241f7f572130c13106f2a869a9cf80885 \
+ atomicwrites@git+https://github.com/jackpot51/rust-atomicwrites\#043ab4859d53ffd3d55334685303d8df39c9f768 \
+ id_tree@git+https://github.com/Drakulix/id-tree.git?branch=feature/copy_clone\#632a57d6d49160e18d7300fa7edae52281ec5482 \
+ smithay-egui@git+https://github.com/Smithay/smithay-egui.git?rev=cdc652e0\#cdc652e0d4823b16a5bd9badd288e38512789dc5 \
+ smithay@git+https://github.com/smithay/smithay?rev=f1e7fc18a\#f1e7fc18a7f060f8ff1e647ca407df62f85467cf \
+ cosmic-text@git+https://github.com/pop-os/cosmic-text.git\#db1530c4ec14bcbb290f9c971d8a6197c90e189a \
+ cosmic-protocols@git+https://github.com/pop-os/cosmic-protocols?branch=main\#e65fa5e2bb47e51656221657049bd3f88ae9dae5 \
+ softbuffer@git+https://github.com/pop-os/softbuffer?tag=v0.3-cosmic\#6f0371ccece51d124c6c5d37082189df0dc5f9ba \
+ cosmic-config,cosmic-config-derive,cosmic-theme,iced,iced_core,iced_futures,iced_graphics,iced_renderer,iced_runtime,iced_style,iced_tiny_skia,iced_wgpu,iced_widget,libcosmic@git+https://github.com/pop-os/libcosmic/\#efe4ce2f5b514e4d553ab82c0c873dca7585c028
diff --git a/x11-wm/cosmic-comp/distinfo b/x11-wm/cosmic-comp/distinfo
new file mode 100644
index 000000000000..d3e7ff10db72
--- /dev/null
+++ b/x11-wm/cosmic-comp/distinfo
@@ -0,0 +1,1119 @@
+TIMESTAMP = 1706489320
+SHA256 (rust/crates/ab_glyph-0.2.23.crate) = 80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225
+SIZE (rust/crates/ab_glyph-0.2.23.crate) = 18537
+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/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.7.7.crate) = 5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd
+SIZE (rust/crates/ahash-0.7.7.crate) = 38508
+SHA256 (rust/crates/ahash-0.8.7.crate) = 77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01
+SIZE (rust/crates/ahash-0.8.7.crate) = 42894
+SHA256 (rust/crates/aho-corasick-1.1.2.crate) = b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0
+SIZE (rust/crates/aho-corasick-1.1.2.crate) = 183136
+SHA256 (rust/crates/aliasable-0.1.3.crate) = 250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd
+SIZE (rust/crates/aliasable-0.1.3.crate) = 6169
+SHA256 (rust/crates/allocator-api2-0.2.16.crate) = 0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5
+SIZE (rust/crates/allocator-api2-0.2.16.crate) = 59025
+SHA256 (rust/crates/almost-0.2.0.crate) = 3aa2999eb46af81abb65c2d30d446778d7e613b60bbf4e174a027e80f90a3c14
+SIZE (rust/crates/almost-0.2.0.crate) = 31976
+SHA256 (rust/crates/android-activity-0.5.1.crate) = 39b801912a977c3fd52d80511fe1c0c8480c6f957f21ae2ce1b92ffe970cf4b9
+SIZE (rust/crates/android-activity-0.5.1.crate) = 258268
+SHA256 (rust/crates/android-properties-0.2.2.crate) = fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04
+SIZE (rust/crates/android-properties-0.2.2.crate) = 4563
+SHA256 (rust/crates/android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311
+SIZE (rust/crates/android_system_properties-0.1.5.crate) = 5243
+SHA256 (rust/crates/anyhow-1.0.79.crate) = 080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca
+SIZE (rust/crates/anyhow-1.0.79.crate) = 44931
+SHA256 (rust/crates/appendlist-1.4.0.crate) = e149dc73cd30538307e7ffa2acd3d2221148eaeed4871f246657b1c3eaa1cbd2
+SIZE (rust/crates/appendlist-1.4.0.crate) = 7252
+SHA256 (rust/crates/apply-0.3.0.crate) = f47b57fc4521e3cae26a4d45b5227f8fadee4c345be0fefd8d5d1711afb8aeb9
+SIZE (rust/crates/apply-0.3.0.crate) = 2566
+SHA256 (rust/crates/approx-0.4.0.crate) = 3f2a05fd1bd10b2527e20a2cd32d8873d115b8b39fe219ee25f42a8aca6ba278
+SIZE (rust/crates/approx-0.4.0.crate) = 14280
+SHA256 (rust/crates/approx-0.5.1.crate) = cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6
+SIZE (rust/crates/approx-0.5.1.crate) = 15100
+SHA256 (rust/crates/arc-swap-1.6.0.crate) = bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6
+SIZE (rust/crates/arc-swap-1.6.0.crate) = 67342
+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.1.crate) = 175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b
+SIZE (rust/crates/as-raw-xcb-connection-1.0.1.crate) = 6460
+SHA256 (rust/crates/ash-0.37.3+1.3.251.crate) = 39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a
+SIZE (rust/crates/ash-0.37.3+1.3.251.crate) = 449524
+SHA256 (rust/crates/async-task-4.7.0.crate) = fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799
+SIZE (rust/crates/async-task-4.7.0.crate) = 38906
+SHA256 (rust/crates/atomic-waker-1.1.2.crate) = 1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0
+SIZE (rust/crates/atomic-waker-1.1.2.crate) = 12422
+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.13.1.crate) = 9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8
+SIZE (rust/crates/base64-0.13.1.crate) = 61002
+SHA256 (rust/crates/base64-0.21.7.crate) = 9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567
+SIZE (rust/crates/base64-0.21.7.crate) = 82576
+SHA256 (rust/crates/bincode-1.3.3.crate) = b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad
+SIZE (rust/crates/bincode-1.3.3.crate) = 28958
+SHA256 (rust/crates/bit-set-0.5.3.crate) = 0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1
+SIZE (rust/crates/bit-set-0.5.3.crate) = 14470
+SHA256 (rust/crates/bit-vec-0.6.3.crate) = 349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb
+SIZE (rust/crates/bit-vec-0.6.3.crate) = 19927
+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.2.crate) = ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf
+SIZE (rust/crates/bitflags-2.4.2.crate) = 42602
+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.2.1.crate) = ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7
+SIZE (rust/crates/block-sys-0.2.1.crate) = 9320
+SHA256 (rust/crates/block2-0.3.0.crate) = 15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68
+SIZE (rust/crates/block2-0.3.0.crate) = 10924
+SHA256 (rust/crates/bumpalo-3.14.0.crate) = 7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec
+SIZE (rust/crates/bumpalo-3.14.0.crate) = 82400
+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.12.4.crate) = fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298
+SIZE (rust/crates/calloop-0.12.4.crate) = 69583
+SHA256 (rust/crates/calloop-wayland-source-0.2.0.crate) = 0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02
+SIZE (rust/crates/calloop-wayland-source-0.2.0.crate) = 11304
+SHA256 (rust/crates/cc-1.0.83.crate) = f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0
+SIZE (rust/crates/cc-1.0.83.crate) = 68343
+SHA256 (rust/crates/cesu8-1.1.0.crate) = 6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c
+SIZE (rust/crates/cesu8-1.1.0.crate) = 10555
+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/cgmath-0.18.0.crate) = 1a98d30140e3296250832bbaaff83b27dcd6fa3cc70fb6f1f3e5c9c0023b5317
+SIZE (rust/crates/cgmath-0.18.0.crate) = 64802
+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/codespan-reporting-0.11.1.crate) = 3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e
+SIZE (rust/crates/codespan-reporting-0.11.1.crate) = 48963
+SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b
+SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
+SHA256 (rust/crates/com-rs-0.2.1.crate) = bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642
+SIZE (rust/crates/com-rs-0.2.1.crate) = 10647
+SHA256 (rust/crates/combine-4.6.6.crate) = 35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4
+SIZE (rust/crates/combine-4.6.6.crate) = 132428
+SHA256 (rust/crates/concurrent-queue-2.4.0.crate) = d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363
+SIZE (rust/crates/concurrent-queue-2.4.0.crate) = 20244
+SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
+SIZE (rust/crates/core-foundation-0.9.4.crate) = 27743
+SHA256 (rust/crates/core-foundation-sys-0.8.6.crate) = 06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f
+SIZE (rust/crates/core-foundation-sys-0.8.6.crate) = 37629
+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.3.crate) = 45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf
+SIZE (rust/crates/core-graphics-types-0.1.3.crate) = 7063
+SHA256 (rust/crates/cpufeatures-0.2.12.crate) = 53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504
+SIZE (rust/crates/cpufeatures-0.2.12.crate) = 12837
+SHA256 (rust/crates/crc32fast-1.3.2.crate) = b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d
+SIZE (rust/crates/crc32fast-1.3.2.crate) = 38661
+SHA256 (rust/crates/crossbeam-channel-0.5.11.crate) = 176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b
+SIZE (rust/crates/crossbeam-channel-0.5.11.crate) = 90434
+SHA256 (rust/crates/crossbeam-deque-0.8.5.crate) = 613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d
+SIZE (rust/crates/crossbeam-deque-0.8.5.crate) = 21726
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-utils-0.8.19.crate) = 248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345
+SIZE (rust/crates/crossbeam-utils-0.8.19.crate) = 42328
+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-0.2.5.crate) = d101c65424c856131a3cb818da2ddde03500dc3656972269cdf79f018ef77eb4
+SIZE (rust/crates/css-color-0.2.5.crate) = 158691
+SHA256 (rust/crates/csscolorparser-0.6.2.crate) = eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf
+SIZE (rust/crates/csscolorparser-0.6.2.crate) = 16859
+SHA256 (rust/crates/ctor-0.2.6.crate) = 30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e
+SIZE (rust/crates/ctor-0.2.6.crate) = 11034
+SHA256 (rust/crates/cursor-icon-1.1.0.crate) = 96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991
+SIZE (rust/crates/cursor-icon-1.1.0.crate) = 11453
+SHA256 (rust/crates/d3d12-0.7.0.crate) = e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20
+SIZE (rust/crates/d3d12-0.7.0.crate) = 17319
+SHA256 (rust/crates/darling-0.20.3.crate) = 0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e
+SIZE (rust/crates/darling-0.20.3.crate) = 26066
+SHA256 (rust/crates/darling_core-0.20.3.crate) = 177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621
+SIZE (rust/crates/darling_core-0.20.3.crate) = 60281
+SHA256 (rust/crates/darling_macro-0.20.3.crate) = 836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5
+SIZE (rust/crates/darling_macro-0.20.3.crate) = 1859
+SHA256 (rust/crates/dashmap-5.5.3.crate) = 978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856
+SIZE (rust/crates/dashmap-5.5.3.crate) = 24061
+SHA256 (rust/crates/data-url-0.2.0.crate) = 8d7439c3735f405729d52c3fbbe4de140eaf938a1fe47d227c27f8254d4302a5
+SIZE (rust/crates/data-url-0.2.0.crate) = 20553
+SHA256 (rust/crates/data-url-0.3.1.crate) = 5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a
+SIZE (rust/crates/data-url-0.3.1.crate) = 21109
+SHA256 (rust/crates/deranged-0.3.11.crate) = b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4
+SIZE (rust/crates/deranged-0.3.11.crate) = 18043
+SHA256 (rust/crates/derive_setters-0.1.6.crate) = 4e8ef033054e131169b8f0f9a7af8f5533a9436fadf3c500ed547f730f07090d
+SIZE (rust/crates/derive_setters-0.1.6.crate) = 6462
+SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
+SIZE (rust/crates/digest-0.10.7.crate) = 19557
+SHA256 (rust/crates/dirs-4.0.0.crate) = ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059
+SIZE (rust/crates/dirs-4.0.0.crate) = 12503
+SHA256 (rust/crates/dirs-5.0.1.crate) = 44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225
+SIZE (rust/crates/dirs-5.0.1.crate) = 12255
+SHA256 (rust/crates/dirs-sys-0.3.7.crate) = 1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6
+SIZE (rust/crates/dirs-sys-0.3.7.crate) = 10597
+SHA256 (rust/crates/dirs-sys-0.4.1.crate) = 520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c
+SIZE (rust/crates/dirs-sys-0.4.1.crate) = 10719
+SHA256 (rust/crates/dispatch-0.2.0.crate) = bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b
+SIZE (rust/crates/dispatch-0.2.0.crate) = 10229
+SHA256 (rust/crates/displaydoc-0.2.4.crate) = 487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d
+SIZE (rust/crates/displaydoc-0.2.4.crate) = 23200
+SHA256 (rust/crates/dlib-0.5.2.crate) = 330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412
+SIZE (rust/crates/dlib-0.5.2.crate) = 5806
+SHA256 (rust/crates/dlv-list-0.3.0.crate) = 0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257
+SIZE (rust/crates/dlv-list-0.3.0.crate) = 11920
+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.10.0.crate) = 97fb1b703ffbc7ebd216eba7900008049a56ace55580ecb2ee7fa801e8d8be87
+SIZE (rust/crates/drm-0.10.0.crate) = 49611
+SHA256 (rust/crates/drm-0.11.1.crate) = a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde
+SIZE (rust/crates/drm-0.11.1.crate) = 49655
+SHA256 (rust/crates/drm-ffi-0.6.0.crate) = ba7d1c19c4b6270e89d59fb27dc6d02a317c658a8a54e54781e1db9b5947595d
+SIZE (rust/crates/drm-ffi-0.6.0.crate) = 10134
+SHA256 (rust/crates/drm-ffi-0.7.1.crate) = 41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6
+SIZE (rust/crates/drm-ffi-0.7.1.crate) = 9581
+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.5.0.crate) = 3a4f1c0468062a56cd5705f1e3b5409eb286d5596a2028ec8e947595d7e715ae
+SIZE (rust/crates/drm-sys-0.5.0.crate) = 55996
+SHA256 (rust/crates/drm-sys-0.6.1.crate) = 2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176
+SIZE (rust/crates/drm-sys-0.6.1.crate) = 10363
+SHA256 (rust/crates/ecolor-0.23.0.crate) = cfdf4e52dbbb615cfd30cf5a5265335c217b5fd8d669593cea74a517d9c605af
+SIZE (rust/crates/ecolor-0.23.0.crate) = 8106
+SHA256 (rust/crates/edid-rs-0.1.0.crate) = 2ab5fa33485cd85ac354df485819a63360fefa312fe04cffe65e6f175be1522c
+SIZE (rust/crates/edid-rs-0.1.0.crate) = 10023
+SHA256 (rust/crates/egui-0.23.0.crate) = 8bd69fed5fcf4fbb8225b24e80ea6193b61e17a625db105ef0c4d71dde6eb8b7
+SIZE (rust/crates/egui-0.23.0.crate) = 244783
+SHA256 (rust/crates/egui_extras-0.23.0.crate) = 68ffe3fe5c00295f91c2a61a74ee271c32f74049c94ba0b1cea8f26eb478bc07
+SIZE (rust/crates/egui_extras-0.23.0.crate) = 31095
+SHA256 (rust/crates/egui_glow-0.23.0.crate) = ce6726c08798822280038bbad2e32f4fc3cbed800cd51c6e34e99cd2d60cc1bc
+SIZE (rust/crates/egui_glow-0.23.0.crate) = 27348
+SHA256 (rust/crates/egui_plot-0.23.0.crate) = c7f33a00fe8eb1ba56535b3dbacdecc7a1365a328908a97c5f3c81bb466be72b
+SIZE (rust/crates/egui_plot-0.23.0.crate) = 38292
+SHA256 (rust/crates/either-1.9.0.crate) = a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07
+SIZE (rust/crates/either-1.9.0.crate) = 16660
+SHA256 (rust/crates/emath-0.23.0.crate) = 1ef2b29de53074e575c18b694167ccbe6e5191f7b25fe65175a0d905a32eeec0
+SIZE (rust/crates/emath-0.23.0.crate) = 19591
+SHA256 (rust/crates/encoding_rs-0.8.33.crate) = 7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1
+SIZE (rust/crates/encoding_rs-0.8.33.crate) = 1370071
+SHA256 (rust/crates/enum-map-2.7.3.crate) = 6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9
+SIZE (rust/crates/enum-map-2.7.3.crate) = 21792
+SHA256 (rust/crates/enum-map-derive-0.17.0.crate) = f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb
+SIZE (rust/crates/enum-map-derive-0.17.0.crate) = 10781
+SHA256 (rust/crates/enumn-0.1.13.crate) = 6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42
+SIZE (rust/crates/enumn-0.1.13.crate) = 8391
+SHA256 (rust/crates/epaint-0.23.0.crate) = 58067b840d009143934d91d8dcb8ded054d8301d7c11a517ace0a99bb1e1595e
+SIZE (rust/crates/epaint-0.23.0.crate) = 853244
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.8.crate) = a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245
+SIZE (rust/crates/errno-0.3.8.crate) = 10645
+SHA256 (rust/crates/etagere-0.2.10.crate) = 306960881d6c46bd0dd6b7f07442a441418c08d0d3e63d8d080b0f64c6343e4e
+SIZE (rust/crates/etagere-0.2.10.crate) = 18109
+SHA256 (rust/crates/euclid-0.22.9.crate) = 87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787
+SIZE (rust/crates/euclid-0.22.9.crate) = 76671
+SHA256 (rust/crates/exr-1.6.4.crate) = 279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56
+SIZE (rust/crates/exr-1.6.4.crate) = 242605
+SHA256 (rust/crates/fast-srgb8-1.0.0.crate) = dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1
+SIZE (rust/crates/fast-srgb8-1.0.0.crate) = 17214
+SHA256 (rust/crates/fastrand-2.0.1.crate) = 25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5
+SIZE (rust/crates/fastrand-2.0.1.crate) = 14664
+SHA256 (rust/crates/fdeflate-0.3.4.crate) = 4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645
+SIZE (rust/crates/fdeflate-0.3.4.crate) = 25001
+SHA256 (rust/crates/filetime-0.2.23.crate) = 1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd
+SIZE (rust/crates/filetime-0.2.23.crate) = 14942
+SHA256 (rust/crates/find-crate-0.6.3.crate) = 59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2
+SIZE (rust/crates/find-crate-0.6.3.crate) = 12092
+SHA256 (rust/crates/flate2-1.0.28.crate) = 46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e
+SIZE (rust/crates/flate2-1.0.28.crate) = 73690
+SHA256 (rust/crates/float-cmp-0.9.0.crate) = 98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4
+SIZE (rust/crates/float-cmp-0.9.0.crate) = 10102
+SHA256 (rust/crates/float_next_after-1.0.0.crate) = 8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8
+SIZE (rust/crates/float_next_after-1.0.0.crate) = 6965
+SHA256 (rust/crates/fluent-0.16.0.crate) = 61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7
+SIZE (rust/crates/fluent-0.16.0.crate) = 8321
+SHA256 (rust/crates/fluent-bundle-0.15.2.crate) = e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd
+SIZE (rust/crates/fluent-bundle-0.15.2.crate) = 32239
+SHA256 (rust/crates/fluent-langneg-0.13.0.crate) = 2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94
+SIZE (rust/crates/fluent-langneg-0.13.0.crate) = 11723
+SHA256 (rust/crates/fluent-syntax-0.11.0.crate) = c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78
+SIZE (rust/crates/fluent-syntax-0.11.0.crate) = 28524
+SHA256 (rust/crates/flume-0.10.14.crate) = 1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577
+SIZE (rust/crates/flume-0.10.14.crate) = 65389
+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.16.0.crate) = 98b88c54a38407f7352dd2c4238830115a6377741098ffd1f997c813d0e088a6
+SIZE (rust/crates/fontdb-0.16.0.crate) = 107295
+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.3.1.crate) = aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b
+SIZE (rust/crates/foreign-types-shared-0.3.1.crate) = 6006
+SHA256 (rust/crates/form_urlencoded-1.2.1.crate) = e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456
+SIZE (rust/crates/form_urlencoded-1.2.1.crate) = 8969
+SHA256 (rust/crates/fraction-0.14.0.crate) = 59a78dd758a47a7305478e0e054f9fde4e983b9f9eccda162bf7ca03b79e9d40
+SIZE (rust/crates/fraction-0.14.0.crate) = 82768
+SHA256 (rust/crates/freedesktop-icons-0.2.4.crate) = 3f9d46a9ae065c46efb83854bb10315de6d333bb6f4526ebe320c004dab7857e
+SIZE (rust/crates/freedesktop-icons-0.2.4.crate) = 9669
+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.30.crate) = 645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0
+SIZE (rust/crates/futures-0.3.30.crate) = 53828
+SHA256 (rust/crates/futures-channel-0.3.30.crate) = eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78
+SIZE (rust/crates/futures-channel-0.3.30.crate) = 31736
+SHA256 (rust/crates/futures-core-0.3.30.crate) = dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d
+SIZE (rust/crates/futures-core-0.3.30.crate) = 14071
+SHA256 (rust/crates/futures-executor-0.3.30.crate) = a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d
+SIZE (rust/crates/futures-executor-0.3.30.crate) = 17744
+SHA256 (rust/crates/futures-io-0.3.30.crate) = a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1
+SIZE (rust/crates/futures-io-0.3.30.crate) = 8910
+SHA256 (rust/crates/futures-macro-0.3.30.crate) = 87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac
+SIZE (rust/crates/futures-macro-0.3.30.crate) = 11278
+SHA256 (rust/crates/futures-sink-0.3.30.crate) = 9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5
+SIZE (rust/crates/futures-sink-0.3.30.crate) = 7852
+SHA256 (rust/crates/futures-task-0.3.30.crate) = 38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004
+SIZE (rust/crates/futures-task-0.3.30.crate) = 11126
+SHA256 (rust/crates/futures-util-0.3.30.crate) = 3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48
+SIZE (rust/crates/futures-util-0.3.30.crate) = 159977
+SHA256 (rust/crates/gbm-0.14.0.crate) = 65dffaf38d96aa22cb748ccd9b1ffe624931e899f54c0225815ef7ac757a409f
+SIZE (rust/crates/gbm-0.14.0.crate) = 12037
+SHA256 (rust/crates/gbm-sys-0.3.0.crate) = 6fd2d6bf7c0143b38beece05f9a5c4c851a49a8434f62bf58ff28da92b0ddc58
+SIZE (rust/crates/gbm-sys-0.3.0.crate) = 7603
+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.3.0.crate) = bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177
+SIZE (rust/crates/gethostname-0.3.0.crate) = 8440
+SHA256 (rust/crates/gethostname-0.4.3.crate) = 0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818
+SIZE (rust/crates/gethostname-0.4.3.crate) = 9336
+SHA256 (rust/crates/getrandom-0.2.12.crate) = 190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5
+SIZE (rust/crates/getrandom-0.2.12.crate) = 36163
+SHA256 (rust/crates/gif-0.12.0.crate) = 80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045
+SIZE (rust/crates/gif-0.12.0.crate) = 634734
+SHA256 (rust/crates/gimli-0.28.1.crate) = 4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253
+SIZE (rust/crates/gimli-0.28.1.crate) = 270497
+SHA256 (rust/crates/gl_generator-0.14.0.crate) = 1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d
+SIZE (rust/crates/gl_generator-0.14.0.crate) = 22330
+SHA256 (rust/crates/glam-0.24.2.crate) = b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945
+SIZE (rust/crates/glam-0.24.2.crate) = 318902
+SHA256 (rust/crates/glow-0.12.3.crate) = ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728
+SIZE (rust/crates/glow-0.12.3.crate) = 149996
+SHA256 (rust/crates/glow-0.13.1.crate) = bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1
+SIZE (rust/crates/glow-0.13.1.crate) = 150940
+SHA256 (rust/crates/glutin_wgl_sys-0.5.0.crate) = 6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead
+SIZE (rust/crates/glutin_wgl_sys-0.5.0.crate) = 5469
+SHA256 (rust/crates/gpu-alloc-0.6.0.crate) = fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171
+SIZE (rust/crates/gpu-alloc-0.6.0.crate) = 19649
+SHA256 (rust/crates/gpu-alloc-types-0.3.0.crate) = 98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4
+SIZE (rust/crates/gpu-alloc-types-0.3.0.crate) = 4128
+SHA256 (rust/crates/gpu-allocator-0.23.0.crate) = 40fe17c8a05d60c38c0a4e5a3c802f2f1ceb66b76c67d96ffb34bef0475a7fad
+SIZE (rust/crates/gpu-allocator-0.23.0.crate) = 50234
+SHA256 (rust/crates/gpu-descriptor-0.2.4.crate) = cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c
+SIZE (rust/crates/gpu-descriptor-0.2.4.crate) = 6641
+SHA256 (rust/crates/gpu-descriptor-types-0.1.2.crate) = 6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c
+SIZE (rust/crates/gpu-descriptor-types-0.1.2.crate) = 1928
+SHA256 (rust/crates/grid-0.11.0.crate) = 1df00eed8d1f0db937f6be10e46e8072b0671accb504cf0f959c5c52c679f5b9
+SIZE (rust/crates/grid-0.11.0.crate) = 14044
+SHA256 (rust/crates/guillotiere-0.6.2.crate) = b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782
+SIZE (rust/crates/guillotiere-0.6.2.crate) = 18116
+SHA256 (rust/crates/half-2.3.1.crate) = bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872
+SIZE (rust/crates/half-2.3.1.crate) = 50257
+SHA256 (rust/crates/hashbrown-0.12.3.crate) = 8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888
+SIZE (rust/crates/hashbrown-0.12.3.crate) = 102968
+SHA256 (rust/crates/hashbrown-0.14.3.crate) = 290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604
+SIZE (rust/crates/hashbrown-0.14.3.crate) = 141425
+SHA256 (rust/crates/hassle-rs-0.10.0.crate) = 1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0
+SIZE (rust/crates/hassle-rs-0.10.0.crate) = 25867
+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.4.crate) = 5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f
+SIZE (rust/crates/hermit-abi-0.3.4.crate) = 14445
+SHA256 (rust/crates/hexf-parse-0.2.1.crate) = dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df
+SIZE (rust/crates/hexf-parse-0.2.1.crate) = 4662
+SHA256 (rust/crates/hmac-0.12.1.crate) = 6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e
+SIZE (rust/crates/hmac-0.12.1.crate) = 42657
+SHA256 (rust/crates/home-0.5.9.crate) = e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5
+SIZE (rust/crates/home-0.5.9.crate) = 8760
+SHA256 (rust/crates/i18n-config-0.4.6.crate) = 0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640
+SIZE (rust/crates/i18n-config-0.4.6.crate) = 7890
+SHA256 (rust/crates/i18n-embed-0.14.1.crate) = 94205d95764f5bb9db9ea98fa77f89653365ca748e27161f5bbea2ffd50e459c
+SIZE (rust/crates/i18n-embed-0.14.1.crate) = 24987
+SHA256 (rust/crates/i18n-embed-fl-0.7.0.crate) = 9fc1f8715195dffc4caddcf1cf3128da15fe5d8a137606ea8856c9300047d5a2
+SIZE (rust/crates/i18n-embed-fl-0.7.0.crate) = 10410
+SHA256 (rust/crates/i18n-embed-impl-0.8.3.crate) = 81093c4701672f59416582fe3145676126fd23ba5db910acad0793c1108aaa58
+SIZE (rust/crates/i18n-embed-impl-0.8.3.crate) = 4712
+SHA256 (rust/crates/icrate-0.0.4.crate) = 99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319
+SIZE (rust/crates/icrate-0.0.4.crate) = 1040120
+SHA256 (rust/crates/ident_case-1.0.1.crate) = b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39
+SIZE (rust/crates/ident_case-1.0.1.crate) = 3492
+SHA256 (rust/crates/idna-0.5.0.crate) = 634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6
+SIZE (rust/crates/idna-0.5.0.crate) = 271940
+SHA256 (rust/crates/image-0.24.8.crate) = 034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23
+SIZE (rust/crates/image-0.24.8.crate) = 9271035
+SHA256 (rust/crates/imagesize-0.10.1.crate) = df19da1e92fbfec043ca97d622955381b1f3ee72a180ec999912df31b1ccd951
+SIZE (rust/crates/imagesize-0.10.1.crate) = 11439
+SHA256 (rust/crates/imagesize-0.12.0.crate) = 029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284
+SIZE (rust/crates/imagesize-0.12.0.crate) = 15747
+SHA256 (rust/crates/indexmap-1.9.3.crate) = bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99
+SIZE (rust/crates/indexmap-1.9.3.crate) = 54653
+SHA256 (rust/crates/indexmap-2.1.0.crate) = d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f
+SIZE (rust/crates/indexmap-2.1.0.crate) = 68224
+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.18.0.crate) = bd4f5b4d1c00331c5245163aacfe5f20be75b564c7112d45893d4ae038119eb0
+SIZE (rust/crates/input-sys-1.18.0.crate) = 365567
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/intl-memoizer-0.5.1.crate) = c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f
+SIZE (rust/crates/intl-memoizer-0.5.1.crate) = 8292
+SHA256 (rust/crates/intl_pluralrules-7.0.2.crate) = 078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972
+SIZE (rust/crates/intl_pluralrules-7.0.2.crate) = 9201
+SHA256 (rust/crates/io-lifetimes-1.0.11.crate) = eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2
+SIZE (rust/crates/io-lifetimes-1.0.11.crate) = 37346
+SHA256 (rust/crates/io-lifetimes-2.0.3.crate) = 5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c
+SIZE (rust/crates/io-lifetimes-2.0.3.crate) = 29216
+SHA256 (rust/crates/itoa-1.0.10.crate) = b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c
+SIZE (rust/crates/itoa-1.0.10.crate) = 10534
+SHA256 (rust/crates/jni-0.21.1.crate) = 1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97
+SIZE (rust/crates/jni-0.21.1.crate) = 105028
+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.27.crate) = 8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d
+SIZE (rust/crates/jobserver-0.1.27.crate) = 24774
+SHA256 (rust/crates/jpeg-decoder-0.3.1.crate) = f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0
+SIZE (rust/crates/jpeg-decoder-0.3.1.crate) = 744364
+SHA256 (rust/crates/js-sys-0.3.67.crate) = 9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1
+SIZE (rust/crates/js-sys-0.3.67.crate) = 80764
+SHA256 (rust/crates/kamadak-exif-0.5.5.crate) = ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077
+SIZE (rust/crates/kamadak-exif-0.5.5.crate) = 54457
+SHA256 (rust/crates/keyframe-1.1.1.crate) = 60708bf7981518d09095d6f5673ce5cf6a64f1e0d9708b554f670e6d9d2bd9a9
+SIZE (rust/crates/keyframe-1.1.1.crate) = 33573
+SHA256 (rust/crates/khronos-egl-6.0.0.crate) = 6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76
+SIZE (rust/crates/khronos-egl-6.0.0.crate) = 29315
+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.8.3.crate) = 7a53776d271cfb873b17c618af0298445c88afc52837f3e948fa3fafd131f449
+SIZE (rust/crates/kurbo-0.8.3.crate) = 81131
+SHA256 (rust/crates/kurbo-0.9.5.crate) = bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b
+SIZE (rust/crates/kurbo-0.9.5.crate) = 108513
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/lebe-0.5.2.crate) = 03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8
+SIZE (rust/crates/lebe-0.5.2.crate) = 8422
+SHA256 (rust/crates/libc-0.2.152.crate) = 13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7
+SIZE (rust/crates/libc-0.2.152.crate) = 740278
+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/libredox-0.0.1.crate) = 85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8
+SIZE (rust/crates/libredox-0.0.1.crate) = 4212
+SHA256 (rust/crates/libredox-0.0.2.crate) = 3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607
+SIZE (rust/crates/libredox-0.0.2.crate) = 4538
+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/libsystemd-0.7.0.crate) = c592dc396b464005f78a5853555b9f240bc5378bf5221acc4e129910b2678869
+SIZE (rust/crates/libsystemd-0.7.0.crate) = 35596
+SHA256 (rust/crates/libudev-sys-0.1.4.crate) = 3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324
+SIZE (rust/crates/libudev-sys-0.1.4.crate) = 6177
+SHA256 (rust/crates/linux-raw-sys-0.4.13.crate) = 01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c
+SIZE (rust/crates/linux-raw-sys-0.4.13.crate) = 1493855
+SHA256 (rust/crates/linux-raw-sys-0.6.4.crate) = f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4
+SIZE (rust/crates/linux-raw-sys-0.6.4.crate) = 1505350
+SHA256 (rust/crates/locale_config-0.3.0.crate) = 08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934
+SIZE (rust/crates/locale_config-0.3.0.crate) = 20808
+SHA256 (rust/crates/lock_api-0.4.11.crate) = 3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45
+SIZE (rust/crates/lock_api-0.4.11.crate) = 27487
+SHA256 (rust/crates/log-0.4.20.crate) = b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f
+SIZE (rust/crates/log-0.4.20.crate) = 38307
+SHA256 (rust/crates/log-panics-2.1.0.crate) = 68f9dd8546191c1850ecf67d22f5ff00a935b890d0e84713159a55495cc2ac5f
+SIZE (rust/crates/log-panics-2.1.0.crate) = 9464
+SHA256 (rust/crates/lru-0.12.1.crate) = 2994eeba8ed550fd9b47a0b38f0242bc3344e496483c6180b69139cc2fa5d1d7
+SIZE (rust/crates/lru-0.12.1.crate) = 14583
+SHA256 (rust/crates/lyon-1.0.1.crate) = 91e7f9cda98b5430809e63ca5197b06c7d191bf7e26dfc467d5a3f0290e2a74f
+SIZE (rust/crates/lyon-1.0.1.crate) = 3837
+SHA256 (rust/crates/lyon_algorithms-1.0.4.crate) = a3bca95f9a4955b3e4a821fbbcd5edfbd9be2a9a50bb5758173e5358bfb4c623
+SIZE (rust/crates/lyon_algorithms-1.0.4.crate) = 31806
+SHA256 (rust/crates/lyon_geom-1.0.5.crate) = edecfb8d234a2b0be031ab02ebcdd9f3b9ee418fb35e265f7a540a48d197bff9
+SIZE (rust/crates/lyon_geom-1.0.5.crate) = 52658
+SHA256 (rust/crates/lyon_path-1.0.4.crate) = ca507745ba7ccbc76e5c44e7b63b1a29d2b0d6126f375806a5bbaf657c7d6c45
+SIZE (rust/crates/lyon_path-1.0.4.crate) = 35616
+SHA256 (rust/crates/lyon_tessellation-1.0.13.crate) = 8c7c67b5bc8123b352b2e7e742b47d1f236a13fe77619433be9568fbd888e9c0
+SIZE (rust/crates/lyon_tessellation-1.0.13.crate) = 183135
+SHA256 (rust/crates/lz4_flex-0.11.2.crate) = 912b45c753ff5f7f5208307e8ace7d2a2e30d024e26d3509f3dce546c044ce15
+SIZE (rust/crates/lz4_flex-0.11.2.crate) = 40135
+SHA256 (rust/crates/malloc_buf-0.0.6.crate) = 62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb
+SIZE (rust/crates/malloc_buf-0.0.6.crate) = 1239
+SHA256 (rust/crates/matchers-0.1.0.crate) = 8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558
+SIZE (rust/crates/matchers-0.1.0.crate) = 6948
+SHA256 (rust/crates/memchr-2.7.1.crate) = 523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149
+SIZE (rust/crates/memchr-2.7.1.crate) = 96307
+SHA256 (rust/crates/memmap2-0.8.0.crate) = 43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed
+SIZE (rust/crates/memmap2-0.8.0.crate) = 30990
+SHA256 (rust/crates/memmap2-0.9.3.crate) = 45fd3a57831bf88bc63f8cebc0cf956116276e97fef3966103e96416209f7c92
+SIZE (rust/crates/memmap2-0.9.3.crate) = 33125
+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.27.0.crate) = c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25
+SIZE (rust/crates/metal-0.27.0.crate) = 3028990
+SHA256 (rust/crates/mime-0.3.17.crate) = 6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a
+SIZE (rust/crates/mime-0.3.17.crate) = 15712
+SHA256 (rust/crates/mime_guess-2.0.4.crate) = 4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef
+SIZE (rust/crates/mime_guess-2.0.4.crate) = 26399
+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/mint-0.5.9.crate) = e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff
+SIZE (rust/crates/mint-0.5.9.crate) = 8399
+SHA256 (rust/crates/mio-0.8.10.crate) = 8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09
+SIZE (rust/crates/mio-0.8.10.crate) = 102345
+SHA256 (rust/crates/mutate_once-0.1.1.crate) = 16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b
+SIZE (rust/crates/mutate_once-0.1.1.crate) = 4276
+SHA256 (rust/crates/naga-0.14.2.crate) = ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e
+SIZE (rust/crates/naga-0.14.2.crate) = 527007
+SHA256 (rust/crates/nanorand-0.7.0.crate) = 6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3
+SIZE (rust/crates/nanorand-0.7.0.crate) = 18437
+SHA256 (rust/crates/natord-1.0.9.crate) = 308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c
+SIZE (rust/crates/natord-1.0.9.crate) = 3866
+SHA256 (rust/crates/ndk-0.8.0.crate) = 2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7
+SIZE (rust/crates/ndk-0.8.0.crate) = 79770
+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.5.0+25.2.9519653.crate) = 8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691
+SIZE (rust/crates/ndk-sys-0.5.0+25.2.9519653.crate) = 307233
+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/nohash-hasher-0.2.0.crate) = 2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451
+SIZE (rust/crates/nohash-hasher-0.2.0.crate) = 8051
+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-0.4.1.crate) = b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af
+SIZE (rust/crates/num-0.4.1.crate) = 9522
+SHA256 (rust/crates/num-bigint-0.4.4.crate) = 608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0
+SIZE (rust/crates/num-bigint-0.4.4.crate) = 99369
+SHA256 (rust/crates/num-complex-0.4.4.crate) = 1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214
+SIZE (rust/crates/num-complex-0.4.4.crate) = 29564
+SHA256 (rust/crates/num-integer-0.1.45.crate) = 225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9
+SIZE (rust/crates/num-integer-0.1.45.crate) = 22529
+SHA256 (rust/crates/num-iter-0.1.43.crate) = 7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252
+SIZE (rust/crates/num-iter-0.1.43.crate) = 10655
+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.7.2.crate) = 02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845
+SIZE (rust/crates/num_enum-0.7.2.crate) = 18571
+SHA256 (rust/crates/num_enum_derive-0.7.2.crate) = 681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b
+SIZE (rust/crates/num_enum_derive-0.7.2.crate) = 17090
+SHA256 (rust/crates/num_threads-0.1.6.crate) = 2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44
+SIZE (rust/crates/num_threads-0.1.6.crate) = 7334
+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.3.2.crate) = c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459
+SIZE (rust/crates/objc-sys-0.3.2.crate) = 19647
+SHA256 (rust/crates/objc2-0.4.1.crate) = 559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d
+SIZE (rust/crates/objc2-0.4.1.crate) = 162783
+SHA256 (rust/crates/objc2-encode-3.0.0.crate) = d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666
+SIZE (rust/crates/objc2-encode-3.0.0.crate) = 17934
+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.2.crate) = a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441
+SIZE (rust/crates/object-0.32.2.crate) = 286994
+SHA256 (rust/crates/once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92
+SIZE (rust/crates/once_cell-1.19.0.crate) = 33046
+SHA256 (rust/crates/option-ext-0.2.0.crate) = 04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d
+SIZE (rust/crates/option-ext-0.2.0.crate) = 7345
+SHA256 (rust/crates/orbclient-0.3.47.crate) = 52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166
+SIZE (rust/crates/orbclient-0.3.47.crate) = 1324509
+SHA256 (rust/crates/ordered-float-4.2.0.crate) = a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e
+SIZE (rust/crates/ordered-float-4.2.0.crate) = 20510
+SHA256 (rust/crates/ordered-multimap-0.4.3.crate) = ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a
+SIZE (rust/crates/ordered-multimap-0.4.3.crate) = 19599
+SHA256 (rust/crates/ouroboros-0.17.2.crate) = e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954
+SIZE (rust/crates/ouroboros-0.17.2.crate) = 11288
+SHA256 (rust/crates/ouroboros_macro-0.17.2.crate) = ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8
+SIZE (rust/crates/ouroboros_macro-0.17.2.crate) = 21532
+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.20.0.crate) = d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7
+SIZE (rust/crates/owned_ttf_parser-0.20.0.crate) = 150890
+SHA256 (rust/crates/palette-0.7.3.crate) = b2e2f34147767aa758aa649415b50a69eeb46a67f9dc7db8011eeb3d84b351dc
+SIZE (rust/crates/palette-0.7.3.crate) = 208590
+SHA256 (rust/crates/palette_derive-0.7.3.crate) = b7db010ec5ff3d4385e4f133916faacd9dad0f6a09394c92d825b3aed310fa0a
+SIZE (rust/crates/palette_derive-0.7.3.crate) = 14344
+SHA256 (rust/crates/parking_lot-0.11.2.crate) = 7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99
+SIZE (rust/crates/parking_lot-0.11.2.crate) = 39869
+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.8.6.crate) = 60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc
+SIZE (rust/crates/parking_lot_core-0.8.6.crate) = 32567
+SHA256 (rust/crates/parking_lot_core-0.9.9.crate) = 4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e
+SIZE (rust/crates/parking_lot_core-0.9.9.crate) = 32445
+SHA256 (rust/crates/paste-1.0.14.crate) = de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c
+SIZE (rust/crates/paste-1.0.14.crate) = 18157
+SHA256 (rust/crates/percent-encoding-2.3.1.crate) = e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e
+SIZE (rust/crates/percent-encoding-2.3.1.crate) = 10235
+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/pkg-config-0.3.29.crate) = 2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb
+SIZE (rust/crates/pkg-config-0.3.29.crate) = 20563
+SHA256 (rust/crates/png-0.17.11.crate) = 1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a
+SIZE (rust/crates/png-0.17.11.crate) = 98834
+SHA256 (rust/crates/polling-3.3.2.crate) = 545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41
+SIZE (rust/crates/polling-3.3.2.crate) = 54814
+SHA256 (rust/crates/powerfmt-0.2.0.crate) = 439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391
+SIZE (rust/crates/powerfmt-0.2.0.crate) = 15165
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/presser-0.3.1.crate) = e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa
+SIZE (rust/crates/presser-0.3.1.crate) = 20946
+SHA256 (rust/crates/proc-macro-crate-3.1.0.crate) = 6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284
+SIZE (rust/crates/proc-macro-crate-3.1.0.crate) = 11084
+SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c
+SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293
+SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869
+SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971
+SHA256 (rust/crates/proc-macro2-1.0.76.crate) = 95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c
+SIZE (rust/crates/proc-macro2-1.0.76.crate) = 45660
+SHA256 (rust/crates/profiling-1.0.13.crate) = d135ede8821cf6376eb7a64148901e1690b788c11ae94dc297ae917dbc91dc0e
+SIZE (rust/crates/profiling-1.0.13.crate) = 13109
+SHA256 (rust/crates/profiling-procmacros-1.0.13.crate) = 4b322d7d65c1ab449be3c890fcbd0db6e1092d0dd05d79dba2dd28032cebeb05
+SIZE (rust/crates/profiling-procmacros-1.0.13.crate) = 5598
+SHA256 (rust/crates/puffin-0.17.0.crate) = 39009d69b9d547c3ffa974a20648fa02f447c05bd0a664012b1ba5a5b06fb14e
+SIZE (rust/crates/puffin-0.17.0.crate) = 20741
+SHA256 (rust/crates/puffin_egui-0.23.0.crate) = c5af236782d21bdd5a6eb2f8cc9a91f8d601c073b7f7d568c95c26604cc12b87
+SIZE (rust/crates/puffin_egui-0.23.0.crate) = 31908
+SHA256 (rust/crates/qoi-0.4.1.crate) = 7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001
+SIZE (rust/crates/qoi-0.4.1.crate) = 71135
+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.35.crate) = 291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef
+SIZE (rust/crates/quote-1.0.35.crate) = 28136
+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/range-alloc-0.1.3.crate) = 9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab
+SIZE (rust/crates/range-alloc-0.1.3.crate) = 7664
+SHA256 (rust/crates/rangemap-1.4.0.crate) = 977b1e897f9d764566891689e642653e5ed90c6895106acd005eb4c1d0203991
+SIZE (rust/crates/rangemap-1.4.0.crate) = 45931
+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/raw-window-handle-0.6.0.crate) = 42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544
+SIZE (rust/crates/raw-window-handle-0.6.0.crate) = 17224
+SHA256 (rust/crates/rayon-1.8.1.crate) = fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051
+SIZE (rust/crates/rayon-1.8.1.crate) = 170448
+SHA256 (rust/crates/rayon-core-1.12.1.crate) = 1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2
+SIZE (rust/crates/rayon-core-1.12.1.crate) = 70701
+SHA256 (rust/crates/rctree-0.5.0.crate) = 3b42e27ef78c35d3998403c1d26f3efd9e135d3e5121b0a4845cc5cc27547f4f
+SIZE (rust/crates/rctree-0.5.0.crate) = 8298
+SHA256 (rust/crates/redox_syscall-0.2.16.crate) = fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a
+SIZE (rust/crates/redox_syscall-0.2.16.crate) = 24012
+SHA256 (rust/crates/redox_syscall-0.3.5.crate) = 567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29
+SIZE (rust/crates/redox_syscall-0.3.5.crate) = 23404
+SHA256 (rust/crates/redox_syscall-0.4.1.crate) = 4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa
+SIZE (rust/crates/redox_syscall-0.4.1.crate) = 24858
+SHA256 (rust/crates/redox_users-0.4.4.crate) = a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4
+SIZE (rust/crates/redox_users-0.4.4.crate) = 15438
+SHA256 (rust/crates/regex-1.10.2.crate) = 380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343
+SIZE (rust/crates/regex-1.10.2.crate) = 252839
+SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
+SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533
+SHA256 (rust/crates/regex-automata-0.4.3.crate) = 5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f
+SIZE (rust/crates/regex-automata-0.4.3.crate) = 617011
+SHA256 (rust/crates/regex-syntax-0.6.29.crate) = f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1
+SIZE (rust/crates/regex-syntax-0.6.29.crate) = 299752
+SHA256 (rust/crates/regex-syntax-0.8.2.crate) = c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f
+SIZE (rust/crates/regex-syntax-0.8.2.crate) = 347228
+SHA256 (rust/crates/renderdoc-0.11.0.crate) = 272da9ec1e28b0ef17df4dcefad820b13f098ebe9c82697111fc57ccff621e12
+SIZE (rust/crates/renderdoc-0.11.0.crate) = 41192
+SHA256 (rust/crates/renderdoc-sys-1.0.0.crate) = 216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b
+SIZE (rust/crates/renderdoc-sys-1.0.0.crate) = 10336
+SHA256 (rust/crates/resvg-0.28.0.crate) = c115863f2d3621999cf187e318bc92b16402dfeff6a48c74df700d77381394c1
+SIZE (rust/crates/resvg-0.28.0.crate) = 94137
+SHA256 (rust/crates/resvg-0.37.0.crate) = cadccb3d99a9efb8e5e00c16fbb732cbe400db2ec7fc004697ee7d97d86cf1f4
+SIZE (rust/crates/resvg-0.37.0.crate) = 85399
+SHA256 (rust/crates/rgb-0.8.37.crate) = 05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8
+SIZE (rust/crates/rgb-0.8.37.crate) = 16644
+SHA256 (rust/crates/ron-0.8.1.crate) = b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94
+SIZE (rust/crates/ron-0.8.1.crate) = 63251
+SHA256 (rust/crates/roxmltree-0.15.1.crate) = 6b9de9831a129b122e7e61f242db509fa9d0838008bf0b29bb0624669edfe48a
+SIZE (rust/crates/roxmltree-0.15.1.crate) = 39078
+SHA256 (rust/crates/roxmltree-0.18.1.crate) = 862340e351ce1b271a378ec53f304a5558f7db87f3769dc655a8f6ecbb68b302
+SIZE (rust/crates/roxmltree-0.18.1.crate) = 43040
+SHA256 (rust/crates/roxmltree-0.19.0.crate) = 3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f
+SIZE (rust/crates/roxmltree-0.19.0.crate) = 53547
+SHA256 (rust/crates/rust-embed-8.2.0.crate) = a82c0bbc10308ed323529fd3c1dce8badda635aa319a5ff0e6466f33b8101e3f
+SIZE (rust/crates/rust-embed-8.2.0.crate) = 902163
+SHA256 (rust/crates/rust-embed-impl-8.2.0.crate) = 6227c01b1783cdfee1bcf844eb44594cd16ec71c35305bf1c9fb5aade2735e16
+SIZE (rust/crates/rust-embed-impl-8.2.0.crate) = 5374
+SHA256 (rust/crates/rust-embed-utils-8.2.0.crate) = 8cb0a25bfbb2d4b4402179c2cf030387d9990857ce08a32592c6238db9fa8665
+SIZE (rust/crates/rust-embed-utils-8.2.0.crate) = 3397
+SHA256 (rust/crates/rust-ini-0.18.0.crate) = f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df
+SIZE (rust/crates/rust-ini-0.18.0.crate) = 15439
+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/rustix-0.38.30.crate) = 322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca
+SIZE (rust/crates/rustix-0.38.30.crate) = 374744
+SHA256 (rust/crates/rustybuzz-0.12.1.crate) = f0ae5692c5beaad6a9e22830deeed7874eae8a4e3ba4076fb48e12c56856222c
+SIZE (rust/crates/rustybuzz-0.12.1.crate) = 242589
+SHA256 (rust/crates/ryu-1.0.16.crate) = f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c
+SIZE (rust/crates/ryu-1.0.16.crate) = 47351
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/sanitize-filename-0.5.0.crate) = 2ed72fbaf78e6f2d41744923916966c4fbe3d7c74e3037a8ee482f1115572603
+SIZE (rust/crates/sanitize-filename-0.5.0.crate) = 4043
+SHA256 (rust/crates/scan_fmt-0.2.6.crate) = 0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248
+SIZE (rust/crates/scan_fmt-0.2.6.crate) = 9676
+SHA256 (rust/crates/scoped-tls-1.0.1.crate) = e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294
+SIZE (rust/crates/scoped-tls-1.0.1.crate) = 8202
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/self_cell-0.10.3.crate) = e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d
+SIZE (rust/crates/self_cell-0.10.3.crate) = 7308
+SHA256 (rust/crates/self_cell-1.0.3.crate) = 58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba
+SIZE (rust/crates/self_cell-1.0.3.crate) = 15147
+SHA256 (rust/crates/sendfd-0.4.3.crate) = 604b71b8fc267e13bb3023a2c901126c8f349393666a6d98ac1ae5729b701798
+SIZE (rust/crates/sendfd-0.4.3.crate) = 11120
+SHA256 (rust/crates/serde-1.0.195.crate) = 63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02
+SIZE (rust/crates/serde-1.0.195.crate) = 76856
+SHA256 (rust/crates/serde_derive-1.0.195.crate) = 46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c
+SIZE (rust/crates/serde_derive-1.0.195.crate) = 55687
+SHA256 (rust/crates/serde_json-1.0.111.crate) = 176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4
+SIZE (rust/crates/serde_json-1.0.111.crate) = 146447
+SHA256 (rust/crates/serde_spanned-0.6.5.crate) = eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1
+SIZE (rust/crates/serde_spanned-0.6.5.crate) = 8349
+SHA256 (rust/crates/sha2-0.10.8.crate) = 793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8
+SIZE (rust/crates/sha2-0.10.8.crate) = 26357
+SHA256 (rust/crates/sharded-slab-0.1.7.crate) = f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6
+SIZE (rust/crates/sharded-slab-0.1.7.crate) = 58227
+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/slab-0.4.9.crate) = 8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67
+SIZE (rust/crates/slab-0.4.9.crate) = 17108
+SHA256 (rust/crates/slotmap-1.0.7.crate) = dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a
+SIZE (rust/crates/slotmap-1.0.7.crate) = 61390
+SHA256 (rust/crates/smallvec-1.13.1.crate) = e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7
+SIZE (rust/crates/smallvec-1.13.1.crate) = 34952
+SHA256 (rust/crates/smithay-client-toolkit-0.18.0.crate) = 60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f
+SIZE (rust/crates/smithay-client-toolkit-0.18.0.crate) = 126729
+SHA256 (rust/crates/smol_str-0.2.1.crate) = e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49
+SIZE (rust/crates/smol_str-0.2.1.crate) = 14689
+SHA256 (rust/crates/snowflake-1.3.0.crate) = 27207bb65232eda1f588cf46db2fee75c0808d557f6b3cf19a75f5d6d7c94df1
+SIZE (rust/crates/snowflake-1.3.0.crate) = 8073
+SHA256 (rust/crates/spin-0.9.8.crate) = 6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67
+SIZE (rust/crates/spin-0.9.8.crate) = 38958
+SHA256 (rust/crates/spirv-0.2.0+1.5.4.crate) = 246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830
+SIZE (rust/crates/spirv-0.2.0+1.5.4.crate) = 30491
+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/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
+SIZE (rust/crates/strsim-0.10.0.crate) = 11355
+SHA256 (rust/crates/subtle-2.5.0.crate) = 81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc
+SIZE (rust/crates/subtle-2.5.0.crate) = 13909
+SHA256 (rust/crates/svg_fmt-0.4.1.crate) = 8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2
+SIZE (rust/crates/svg_fmt-0.4.1.crate) = 4052
+SHA256 (rust/crates/svgtypes-0.8.2.crate) = 22975e8a2bac6a76bb54f898a6b18764633b00e780330f0b689f65afb3975564
+SIZE (rust/crates/svgtypes-0.8.2.crate) = 32694
+SHA256 (rust/crates/svgtypes-0.13.0.crate) = 6e44e288cd960318917cbd540340968b90becc8bc81f171345d706e7a89d9d70
+SIZE (rust/crates/svgtypes-0.13.0.crate) = 38095
+SHA256 (rust/crates/swash-0.1.8.crate) = 3b7c73c813353c347272919aa1af2885068b05e625e5532b43049e4f641ae77f
+SIZE (rust/crates/swash-0.1.8.crate) = 276623
+SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
+SIZE (rust/crates/syn-1.0.109.crate) = 237611
+SHA256 (rust/crates/syn-2.0.48.crate) = 0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f
+SIZE (rust/crates/syn-2.0.48.crate) = 250566
+SHA256 (rust/crates/sys-locale-0.3.1.crate) = e801cf239ecd6ccd71f03d270d67dd53d13e90aab208bf4b8fe4ad957ea949b0
+SIZE (rust/crates/sys-locale-0.3.1.crate) = 15681
+SHA256 (rust/crates/tempfile-3.9.0.crate) = 01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa
+SIZE (rust/crates/tempfile-3.9.0.crate) = 32182
+SHA256 (rust/crates/termcolor-1.4.1.crate) = 06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755
+SIZE (rust/crates/termcolor-1.4.1.crate) = 18773
+SHA256 (rust/crates/thiserror-1.0.56.crate) = d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad
+SIZE (rust/crates/thiserror-1.0.56.crate) = 20592
+SHA256 (rust/crates/thiserror-impl-1.0.56.crate) = fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471
+SIZE (rust/crates/thiserror-impl-1.0.56.crate) = 15367
+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.1.crate) = ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e
+SIZE (rust/crates/tiff-0.9.1.crate) = 1423953
+SHA256 (rust/crates/time-0.3.31.crate) = f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e
+SIZE (rust/crates/time-0.3.31.crate) = 121762
+SHA256 (rust/crates/time-core-0.1.2.crate) = ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3
+SIZE (rust/crates/time-core-0.1.2.crate) = 7191
+SHA256 (rust/crates/time-macros-0.2.16.crate) = 26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f
+SIZE (rust/crates/time-macros-0.2.16.crate) = 24356
+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.11.3.crate) = b6a067b809476893fce6a254cf285850ff69c847e6cfbade6a20b655b6c7e80d
+SIZE (rust/crates/tiny-skia-0.11.3.crate) = 200744
+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.11.3.crate) = 5de35e8a90052baaaf61f171680ac2f8e925a1e43ea9d2e3a00514772250e541
+SIZE (rust/crates/tiny-skia-path-0.11.3.crate) = 47752
+SHA256 (rust/crates/tiny-xlib-0.2.2.crate) = d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d
+SIZE (rust/crates/tiny-xlib-0.2.2.crate) = 15775
+SHA256 (rust/crates/tinystr-0.7.5.crate) = 83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece
+SIZE (rust/crates/tinystr-0.7.5.crate) = 16366
+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/toml-0.5.11.crate) = f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234
+SIZE (rust/crates/toml-0.5.11.crate) = 54910
+SHA256 (rust/crates/toml-0.8.8.crate) = a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35
+SIZE (rust/crates/toml-0.8.8.crate) = 50451
+SHA256 (rust/crates/toml_datetime-0.6.5.crate) = 3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1
+SIZE (rust/crates/toml_datetime-0.6.5.crate) = 10910
+SHA256 (rust/crates/toml_edit-0.21.0.crate) = d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03
+SIZE (rust/crates/toml_edit-0.21.0.crate) = 101265
+SHA256 (rust/crates/tracing-0.1.40.crate) = c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef
+SIZE (rust/crates/tracing-0.1.40.crate) = 79459
+SHA256 (rust/crates/tracing-attributes-0.1.27.crate) = 34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7
+SIZE (rust/crates/tracing-attributes-0.1.27.crate) = 32241
+SHA256 (rust/crates/tracing-core-0.1.32.crate) = c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54
+SIZE (rust/crates/tracing-core-0.1.32.crate) = 61221
+SHA256 (rust/crates/tracing-journald-0.3.0.crate) = ba316a74e8fc3c3896a850dba2375928a9fa171b085ecddfc7c054d39970f3fd
+SIZE (rust/crates/tracing-journald-0.3.0.crate) = 11592
+SHA256 (rust/crates/tracing-log-0.2.0.crate) = ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3
+SIZE (rust/crates/tracing-log-0.2.0.crate) = 17561
+SHA256 (rust/crates/tracing-subscriber-0.3.18.crate) = ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b
+SIZE (rust/crates/tracing-subscriber-0.3.18.crate) = 196312
+SHA256 (rust/crates/ttf-parser-0.20.0.crate) = 17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4
+SIZE (rust/crates/ttf-parser-0.20.0.crate) = 161769
+SHA256 (rust/crates/type-map-0.4.0.crate) = b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46
+SIZE (rust/crates/type-map-0.4.0.crate) = 3177
+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/udev-0.8.0.crate) = 50051c6e22be28ee6f217d50014f3bc29e81c20dc66ff7ca0d5c5226e1dcc5a1
+SIZE (rust/crates/udev-0.8.0.crate) = 20532
+SHA256 (rust/crates/unic-langid-0.9.4.crate) = 238722e6d794ed130f91f4ea33e01fcff4f188d92337a21297892521c72df516
+SIZE (rust/crates/unic-langid-0.9.4.crate) = 8850
+SHA256 (rust/crates/unic-langid-impl-0.9.4.crate) = 4bd55a2063fdea4ef1f8633243a7b0524cbeef1905ae04c31a1c9b9775c55bc6
+SIZE (rust/crates/unic-langid-impl-0.9.4.crate) = 89401
+SHA256 (rust/crates/unicase-2.7.0.crate) = f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89
+SIZE (rust/crates/unicase-2.7.0.crate) = 23783
+SHA256 (rust/crates/unicode-bidi-0.3.15.crate) = 08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75
+SIZE (rust/crates/unicode-bidi-0.3.15.crate) = 56811
+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-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-properties-0.1.1.crate) = e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291
+SIZE (rust/crates/unicode-properties-0.1.1.crate) = 41088
+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-width-0.1.11.crate) = e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85
+SIZE (rust/crates/unicode-width-0.1.11.crate) = 19187
+SHA256 (rust/crates/unicode-xid-0.2.4.crate) = f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c
+SIZE (rust/crates/unicode-xid-0.2.4.crate) = 15352
+SHA256 (rust/crates/url-2.5.0.crate) = 31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633
+SIZE (rust/crates/url-2.5.0.crate) = 78605
+SHA256 (rust/crates/usvg-0.28.0.crate) = 8b5b7c2b30845b3348c067ca3d09e20cc6e327c288f0ca4c48698712abf432e9
+SIZE (rust/crates/usvg-0.28.0.crate) = 84567
+SHA256 (rust/crates/usvg-0.37.0.crate) = 38b0a51b72ab80ca511d126b77feeeb4fb1e972764653e61feac30adc161a756
+SIZE (rust/crates/usvg-0.37.0.crate) = 32083
+SHA256 (rust/crates/usvg-parser-0.37.0.crate) = 9bd4e3c291f45d152929a31f0f6c819245e2921bfd01e7bd91201a9af39a2bdc
+SIZE (rust/crates/usvg-parser-0.37.0.crate) = 65397
+SHA256 (rust/crates/usvg-text-layout-0.37.0.crate) = d383a3965de199d7f96d4e11a44dd859f46e86de7f3dca9a39bf82605da0a37c
+SIZE (rust/crates/usvg-text-layout-0.37.0.crate) = 21543
+SHA256 (rust/crates/usvg-tree-0.37.0.crate) = 8ee3d202ebdb97a6215604b8f5b4d6ef9024efd623cf2e373a6416ba976ec7d3
+SIZE (rust/crates/usvg-tree-0.37.0.crate) = 20519
+SHA256 (rust/crates/uuid-1.7.0.crate) = f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a
+SIZE (rust/crates/uuid-1.7.0.crate) = 42627
+SHA256 (rust/crates/valuable-0.1.0.crate) = 830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d
+SIZE (rust/crates/valuable-0.1.0.crate) = 27718
+SHA256 (rust/crates/vec1-1.10.1.crate) = 2bda7c41ca331fe9a1c278a9e7ee055f4be7f5eb1c2b72f079b4ff8b5fce9d5c
+SIZE (rust/crates/vec1-1.10.1.crate) = 32858
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+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.90.crate) = b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406
+SIZE (rust/crates/wasm-bindgen-0.2.90.crate) = 182529
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.90.crate) = fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd
+SIZE (rust/crates/wasm-bindgen-backend-0.2.90.crate) = 28348
+SHA256 (rust/crates/wasm-bindgen-futures-0.4.40.crate) = bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461
+SIZE (rust/crates/wasm-bindgen-futures-0.4.40.crate) = 15375
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.90.crate) = 3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999
+SIZE (rust/crates/wasm-bindgen-macro-0.2.90.crate) = 13904
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.90.crate) = bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.90.crate) = 20008
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.90.crate) = 4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b
+SIZE (rust/crates/wasm-bindgen-shared-0.2.90.crate) = 7264
+SHA256 (rust/crates/wasm-timer-0.2.5.crate) = be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f
+SIZE (rust/crates/wasm-timer-0.2.5.crate) = 21668
+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.31.1.crate) = 1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3
+SIZE (rust/crates/wayland-client-0.31.1.crate) = 62635
+SHA256 (rust/crates/wayland-csd-frame-0.3.0.crate) = 625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e
+SIZE (rust/crates/wayland-csd-frame-0.3.0.crate) = 5696
+SHA256 (rust/crates/wayland-cursor-0.31.0.crate) = a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b
+SIZE (rust/crates/wayland-cursor-0.31.0.crate) = 6938
+SHA256 (rust/crates/wayland-egl-0.32.0.crate) = 355f652e5a24ae02d2ad536c8fc2d3dcc6c2bd635027cd6103a193e7d75eeda2
+SIZE (rust/crates/wayland-egl-0.32.0.crate) = 4026
+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-plasma-0.2.0.crate) = 23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479
+SIZE (rust/crates/wayland-protocols-plasma-0.2.0.crate) = 59992
+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.31.0.crate) = fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c
+SIZE (rust/crates/wayland-scanner-0.31.0.crate) = 35245
+SHA256 (rust/crates/wayland-server-0.31.0.crate) = 3f3f0c52a445936ca1184c98f1a69cf4ad9c9130788884531ef04428468cb1ce
+SIZE (rust/crates/wayland-server-0.31.0.crate) = 52048
+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/web-time-0.2.4.crate) = aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0
+SIZE (rust/crates/web-time-0.2.4.crate) = 15743
+SHA256 (rust/crates/weezl-0.1.7.crate) = 9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb
+SIZE (rust/crates/weezl-0.1.7.crate) = 42166
+SHA256 (rust/crates/wgpu-0.18.0.crate) = 30e7d227c9f961f2061c26f4cb0fbd4df0ef37e056edd0931783599d6c94ef24
+SIZE (rust/crates/wgpu-0.18.0.crate) = 99673
+SHA256 (rust/crates/wgpu-core-0.18.1.crate) = ef91c1d62d1e9e81c79e600131a258edf75c9531cbdbde09c44a011a47312726
+SIZE (rust/crates/wgpu-core-0.18.1.crate) = 225351
+SHA256 (rust/crates/wgpu-hal-0.18.1.crate) = b84ecc802da3eb67b4cf3dd9ea6fe45bbb47ef13e6c49c5c3240868a9cc6cdd9
+SIZE (rust/crates/wgpu-hal-0.18.1.crate) = 268148
+SHA256 (rust/crates/wgpu-types-0.18.0.crate) = 0d5ed5f0edf0de351fe311c53304986315ce866f394a2e6df0c4b3c70774bcdd
+SIZE (rust/crates/wgpu-types-0.18.0.crate) = 55501
+SHA256 (rust/crates/widestring-1.0.2.crate) = 653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8
+SIZE (rust/crates/widestring-1.0.2.crate) = 79706
+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.51.1.crate) = ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9
+SIZE (rust/crates/windows-0.51.1.crate) = 12250614
+SHA256 (rust/crates/windows-core-0.51.1.crate) = f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64
+SIZE (rust/crates/windows-core-0.51.1.crate) = 42364
+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-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d
+SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877
+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-targets-0.52.0.crate) = 8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd
+SIZE (rust/crates/windows-targets-0.52.0.crate) = 6229
+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_gnullvm-0.52.0.crate) = cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.0.crate) = 430182
+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_aarch64_msvc-0.52.0.crate) = bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef
+SIZE (rust/crates/windows_aarch64_msvc-0.52.0.crate) = 821663
+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_gnu-0.52.0.crate) = a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313
+SIZE (rust/crates/windows_i686_gnu-0.52.0.crate) = 870285
+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_i686_msvc-0.52.0.crate) = ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a
+SIZE (rust/crates/windows_i686_msvc-0.52.0.crate) = 888693
+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_gnu-0.52.0.crate) = 3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd
+SIZE (rust/crates/windows_x86_64_gnu-0.52.0.crate) = 826213
+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_gnullvm-0.52.0.crate) = 1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.0.crate) = 430165
+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/windows_x86_64_msvc-0.52.0.crate) = dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04
+SIZE (rust/crates/windows_x86_64_msvc-0.52.0.crate) = 821600
+SHA256 (rust/crates/winit-0.29.10.crate) = 4c824f11941eeae66ec71111cc2674373c772f482b58939bb4066b642aa2ffcf
+SIZE (rust/crates/winit-0.29.10.crate) = 574116
+SHA256 (rust/crates/winnow-0.5.34.crate) = b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16
+SIZE (rust/crates/winnow-0.5.34.crate) = 154055
+SHA256 (rust/crates/wio-0.2.2.crate) = 5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5
+SIZE (rust/crates/wio-0.2.2.crate) = 11214
+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.12.0.crate) = b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a
+SIZE (rust/crates/x11rb-0.12.0.crate) = 218514
+SHA256 (rust/crates/x11rb-0.13.0.crate) = f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a
+SIZE (rust/crates/x11rb-0.13.0.crate) = 222396
+SHA256 (rust/crates/x11rb-protocol-0.12.0.crate) = 82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc
+SIZE (rust/crates/x11rb-protocol-0.12.0.crate) = 478311
+SHA256 (rust/crates/x11rb-protocol-0.13.0.crate) = e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34
+SIZE (rust/crates/x11rb-protocol-0.13.0.crate) = 507838
+SHA256 (rust/crates/xcursor-0.3.5.crate) = 6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911
+SIZE (rust/crates/xcursor-0.3.5.crate) = 6256
+SHA256 (rust/crates/xdg-2.5.2.crate) = 213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546
+SIZE (rust/crates/xdg-2.5.2.crate) = 14394
+SHA256 (rust/crates/xdg-user-0.2.1.crate) = a1d5cd803f28ce5a488c8b129858222998c0a06bbec81f9d1b71faed1f9f9f0e
+SIZE (rust/crates/xdg-user-0.2.1.crate) = 9538
+SHA256 (rust/crates/xkbcommon-0.7.0.crate) = 13867d259930edc7091a6c41b4ce6eee464328c6ff9659b7e4c668ca20d4c91e
+SIZE (rust/crates/xkbcommon-0.7.0.crate) = 58896
+SHA256 (rust/crates/xkbcommon-dl-0.4.1.crate) = 6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699
+SIZE (rust/crates/xkbcommon-dl-0.4.1.crate) = 5832
+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/xxhash-rust-0.8.8.crate) = 53be06678ed9e83edb1745eb72efc0bbcd7b5c3c35711a860906aed827a13d61
+SIZE (rust/crates/xxhash-rust-0.8.8.crate) = 18515
+SHA256 (rust/crates/yazi-0.1.6.crate) = c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1
+SIZE (rust/crates/yazi-0.1.6.crate) = 28835
+SHA256 (rust/crates/zeno-0.2.3.crate) = dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697
+SIZE (rust/crates/zeno-0.2.3.crate) = 40164
+SHA256 (rust/crates/zerocopy-0.7.32.crate) = 74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be
+SIZE (rust/crates/zerocopy-0.7.32.crate) = 151096
+SHA256 (rust/crates/zerocopy-derive-0.7.32.crate) = 9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6
+SIZE (rust/crates/zerocopy-derive-0.7.32.crate) = 37623
+SHA256 (rust/crates/zune-inflate-0.2.54.crate) = 73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02
+SIZE (rust/crates/zune-inflate-0.2.54.crate) = 37973
+SHA256 (jackpot51-glyphon-abb70c0fda8cf1a5dfc314c1c778103d7ba951e6_GH0.tar.gz) = 0e0192006dbce1cbe454fb3fadbb0d897ec0444a8050375a85a951ebb68c2095
+SIZE (jackpot51-glyphon-abb70c0fda8cf1a5dfc314c1c778103d7ba951e6_GH0.tar.gz) = 182998
+SHA256 (DioxusLabs-taffy-7781c70241f7f572130c13106f2a869a9cf80885_GH0.tar.gz) = e1a8e5cd37d8bb34badfd3c3e03a6948893a2ae6f789143162253f1f8e11fd4a
+SIZE (DioxusLabs-taffy-7781c70241f7f572130c13106f2a869a9cf80885_GH0.tar.gz) = 389939
+SHA256 (jackpot51-rust-atomicwrites-043ab4859d53ffd3d55334685303d8df39c9f768_GH0.tar.gz) = 95ce4266b50ce6470ba74a5a9ce718bbfba45bf5ab43786db05be1682f6f0db1
+SIZE (jackpot51-rust-atomicwrites-043ab4859d53ffd3d55334685303d8df39c9f768_GH0.tar.gz) = 6787
+SHA256 (Drakulix-id-tree-632a57d6d49160e18d7300fa7edae52281ec5482_GH0.tar.gz) = 8393b1b94f1f2d00c916b677e898332579420d8cf3781a68d1866c1b9bc8685d
+SIZE (Drakulix-id-tree-632a57d6d49160e18d7300fa7edae52281ec5482_GH0.tar.gz) = 29608
+SHA256 (Smithay-smithay-egui-cdc652e0d4823b16a5bd9badd288e38512789dc5_GH0.tar.gz) = c7f24118a1410bf55dc39bb541ffec1330d2d0504ec57a1c420d4ee8c00c708e
+SIZE (Smithay-smithay-egui-cdc652e0d4823b16a5bd9badd288e38512789dc5_GH0.tar.gz) = 11092
+SHA256 (smithay-smithay-f1e7fc18a7f060f8ff1e647ca407df62f85467cf_GH0.tar.gz) = 3b9f9dac0c8a0e616641ad4bc62209c40d0ff57b3c3f464d323d7adfc4b7627d
+SIZE (smithay-smithay-f1e7fc18a7f060f8ff1e647ca407df62f85467cf_GH0.tar.gz) = 712139
+SHA256 (pop-os-cosmic-text-db1530c4ec14bcbb290f9c971d8a6197c90e189a_GH0.tar.gz) = 91948ff6407228cdb39b1f63155a19bc65f2d2c5f7f1cce53ec17435fb1de8f7
+SIZE (pop-os-cosmic-text-db1530c4ec14bcbb290f9c971d8a6197c90e189a_GH0.tar.gz) = 175113
+SHA256 (pop-os-cosmic-protocols-e65fa5e2bb47e51656221657049bd3f88ae9dae5_GH0.tar.gz) = 138a25c0e6754e5f59a6b615b58e2720df33ac4d202115ce20f5f3e0418e0b2a
+SIZE (pop-os-cosmic-protocols-e65fa5e2bb47e51656221657049bd3f88ae9dae5_GH0.tar.gz) = 47314
+SHA256 (pop-os-softbuffer-v0.3-cosmic_GH0.tar.gz) = ce82bbee893bcd1838c6770adf2cdf36b081d84add0d65b8dd2e86c2e12860b0
+SIZE (pop-os-softbuffer-v0.3-cosmic_GH0.tar.gz) = 161848
+SHA256 (pop-os-libcosmic-efe4ce2f5b514e4d553ab82c0c873dca7585c028_GH0.tar.gz) = 008ad8bae4add3630d249584798ce7dc905354f7577d52e6568b6b5643667fda
+SIZE (pop-os-libcosmic-efe4ce2f5b514e4d553ab82c0c873dca7585c028_GH0.tar.gz) = 1055072
+SHA256 (pop-os-cosmic-comp-s20240129-ce74675_GH0.tar.gz) = 1f3a0edb25f53624c4be494992def66e9f338f830fe678f0f3c174a31404e17e
+SIZE (pop-os-cosmic-comp-s20240129-ce74675_GH0.tar.gz) = 320713
+SHA256 (pop-os-iced-0.4.2-1768-g6115280d_GH0.tar.gz) = 10dfe4a05e0bfc88401fc58f925b451176018f0057508ba5d606dff7089199ef
+SIZE (pop-os-iced-0.4.2-1768-g6115280d_GH0.tar.gz) = 4632265
diff --git a/x11-wm/cosmic-comp/files/patch-Cargo.toml b/x11-wm/cosmic-comp/files/patch-Cargo.toml
new file mode 100644
index 000000000000..7b2fb5606968
--- /dev/null
+++ b/x11-wm/cosmic-comp/files/patch-Cargo.toml
@@ -0,0 +1,19 @@
+===> Updating Cargo.lock
+error: failed to resolve patches for `https://github.com/Smithay/smithay.git`
+
+Caused by:
+ patch for `smithay` in `https://github.com/Smithay/smithay.git` failed to resolve
+
+Caused by:
+ The patch location `https://github.com/smithay/smithay?rev=f1e7fc18a` does not appear to contain any packages matching the name `smithay`.
+*** Error code 101
+
+--- Cargo.toml.orig 2024-01-29 00:48:40 UTC
++++ Cargo.toml
+@@ -89,6 +89,3 @@ lto = "fat"
+
+ [profile.release]
+ lto = "fat"
+-
+-[patch."https://github.com/Smithay/smithay.git"]
+-smithay = { git = "https://github.com/smithay//smithay", rev = "f1e7fc18a" }
diff --git a/x11-wm/cosmic-comp/files/patch-drm-sys b/x11-wm/cosmic-comp/files/patch-drm-sys
new file mode 100644
index 000000000000..76d063e1d041
--- /dev/null
+++ b/x11-wm/cosmic-comp/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.5.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 = core::ffi::c_ushort;
++pub type __int32_t = core::ffi::c_int;
++pub type __uint32_t = core::ffi::c_uint;
++pub type __int64_t = core::ffi::c_long;
++pub type __uint64_t = core::ffi::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 = core::ffi::c_ulong;
++pub type drm_context_t = core::ffi::c_uint;
++pub type drm_drawable_t = core::ffi::c_uint;
++pub type drm_magic_t = core::ffi::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: core::ffi::c_ushort,
++ pub y1: core::ffi::c_ushort,
++ pub x2: core::ffi::c_ushort,
++ pub y2: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: core::ffi::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: core::ffi::c_uchar,
++ pub prev: core::ffi::c_uchar,
++ pub in_use: core::ffi::c_uchar,
++ pub padding: core::ffi::c_uchar,
++ pub age: core::ffi::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: core::ffi::c_uint,
++ pub padding: [core::ffi::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: core::ffi::c_int,
++ pub version_minor: core::ffi::c_int,
++ pub version_patchlevel: core::ffi::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut core::ffi::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut core::ffi::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut core::ffi::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 core::ffi::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: core::ffi::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: core::ffi::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: core::ffi::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = core::ffi::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 = core::ffi::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 = core::ffi::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: core::ffi::c_uint,
++ pub handle: *mut core::ffi::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: core::ffi::c_ulong,
++ pub size: core::ffi::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut core::ffi::c_void,
++ pub mtrr: core::ffi::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: core::ffi::c_int,
++ pub auth: core::ffi::c_int,
++ pub pid: core::ffi::c_ulong,
++ pub uid: core::ffi::c_ulong,
++ pub magic: core::ffi::c_ulong,
++ pub iocs: core::ffi::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::c_int,
++ pub size: core::ffi::c_int,
++ pub low_mark: core::ffi::c_int,
++ pub high_mark: core::ffi::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: core::ffi::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::c_int,
++ pub list: *mut core::ffi::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: core::ffi::c_int,
++ pub total: core::ffi::c_int,
++ pub used: core::ffi::c_int,
++ pub address: *mut core::ffi::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: core::ffi::c_int,
++ pub virtual_: *mut core::ffi::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: core::ffi::c_int,
++ pub send_count: core::ffi::c_int,
++ pub send_indices: *mut core::ffi::c_int,
++ pub send_sizes: *mut core::ffi::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: core::ffi::c_int,
++ pub request_size: core::ffi::c_int,
++ pub request_indices: *mut core::ffi::c_int,
++ pub request_sizes: *mut core::ffi::c_int,
++ pub granted_count: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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_: core::ffi::c_uint,
++ pub num: core::ffi::c_uint,
++ pub data: core::ffi::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: core::ffi::c_int,
++ pub busnum: core::ffi::c_int,
++ pub devnum: core::ffi::c_int,
++ pub funcnum: core::ffi::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = core::ffi::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: core::ffi::c_uint,
++ pub signal: core::ffi::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: core::ffi::c_uint,
++ pub tval_sec: core::ffi::c_long,
++ pub tval_usec: core::ffi::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: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++ pub type_: core::ffi::c_ulong,
++ pub physical: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: core::ffi::c_ulong,
++ pub offset: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: core::ffi::c_int,
++ pub agp_version_minor: core::ffi::c_int,
++ pub mode: core::ffi::c_ulong,
++ pub aperture_base: core::ffi::c_ulong,
++ pub aperture_size: core::ffi::c_ulong,
++ pub memory_allowed: core::ffi::c_ulong,
++ pub memory_used: core::ffi::c_ulong,
++ pub id_vendor: core::ffi::c_ushort,
++ pub id_device: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: core::ffi::c_int,
++ pub drm_di_minor: core::ffi::c_int,
++ pub drm_dd_major: core::ffi::c_int,
++ pub drm_dd_minor: core::ffi::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: [core::ffi::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 = core::ffi::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: [core::ffi::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: [core::ffi::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: core::ffi::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: core::ffi::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.5.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 = core::ffi::c_ushort;
++pub type __int32_t = core::ffi::c_int;
++pub type __uint32_t = core::ffi::c_uint;
++pub type __int64_t = core::ffi::c_longlong;
++pub type __uint64_t = core::ffi::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 = core::ffi::c_ulong;
++pub type drm_context_t = core::ffi::c_uint;
++pub type drm_drawable_t = core::ffi::c_uint;
++pub type drm_magic_t = core::ffi::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: core::ffi::c_ushort,
++ pub y1: core::ffi::c_ushort,
++ pub x2: core::ffi::c_ushort,
++ pub y2: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: core::ffi::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: core::ffi::c_uchar,
++ pub prev: core::ffi::c_uchar,
++ pub in_use: core::ffi::c_uchar,
++ pub padding: core::ffi::c_uchar,
++ pub age: core::ffi::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: core::ffi::c_uint,
++ pub padding: [core::ffi::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: core::ffi::c_int,
++ pub version_minor: core::ffi::c_int,
++ pub version_patchlevel: core::ffi::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut core::ffi::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut core::ffi::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut core::ffi::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 core::ffi::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: core::ffi::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: core::ffi::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: core::ffi::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = core::ffi::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 = core::ffi::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 = core::ffi::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: core::ffi::c_uint,
++ pub handle: *mut core::ffi::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: core::ffi::c_ulong,
++ pub size: core::ffi::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut core::ffi::c_void,
++ pub mtrr: core::ffi::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: core::ffi::c_int,
++ pub auth: core::ffi::c_int,
++ pub pid: core::ffi::c_ulong,
++ pub uid: core::ffi::c_ulong,
++ pub magic: core::ffi::c_ulong,
++ pub iocs: core::ffi::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::c_int,
++ pub size: core::ffi::c_int,
++ pub low_mark: core::ffi::c_int,
++ pub high_mark: core::ffi::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: core::ffi::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::c_int,
++ pub list: *mut core::ffi::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: core::ffi::c_int,
++ pub total: core::ffi::c_int,
++ pub used: core::ffi::c_int,
++ pub address: *mut core::ffi::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: core::ffi::c_int,
++ pub virtual_: *mut core::ffi::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: core::ffi::c_int,
++ pub send_count: core::ffi::c_int,
++ pub send_indices: *mut core::ffi::c_int,
++ pub send_sizes: *mut core::ffi::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: core::ffi::c_int,
++ pub request_size: core::ffi::c_int,
++ pub request_indices: *mut core::ffi::c_int,
++ pub request_sizes: *mut core::ffi::c_int,
++ pub granted_count: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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_: core::ffi::c_uint,
++ pub num: core::ffi::c_uint,
++ pub data: core::ffi::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: core::ffi::c_int,
++ pub busnum: core::ffi::c_int,
++ pub devnum: core::ffi::c_int,
++ pub funcnum: core::ffi::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = core::ffi::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: core::ffi::c_uint,
++ pub signal: core::ffi::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: core::ffi::c_uint,
++ pub tval_sec: core::ffi::c_long,
++ pub tval_usec: core::ffi::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: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++ pub type_: core::ffi::c_ulong,
++ pub physical: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: core::ffi::c_ulong,
++ pub offset: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: core::ffi::c_int,
++ pub agp_version_minor: core::ffi::c_int,
++ pub mode: core::ffi::c_ulong,
++ pub aperture_base: core::ffi::c_ulong,
++ pub aperture_size: core::ffi::c_ulong,
++ pub memory_allowed: core::ffi::c_ulong,
++ pub memory_used: core::ffi::c_ulong,
++ pub id_vendor: core::ffi::c_ushort,
++ pub id_device: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: core::ffi::c_int,
++ pub drm_di_minor: core::ffi::c_int,
++ pub drm_dd_major: core::ffi::c_int,
++ pub drm_dd_minor: core::ffi::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: [core::ffi::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 = core::ffi::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: [core::ffi::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: [core::ffi::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: core::ffi::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: core::ffi::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.5.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 = core::ffi::c_ushort;
++pub type __int32_t = core::ffi::c_int;
++pub type __uint32_t = core::ffi::c_uint;
++pub type __int64_t = core::ffi::c_longlong;
++pub type __uint64_t = core::ffi::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 = core::ffi::c_ulong;
++pub type drm_context_t = core::ffi::c_uint;
++pub type drm_drawable_t = core::ffi::c_uint;
++pub type drm_magic_t = core::ffi::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: core::ffi::c_ushort,
++ pub y1: core::ffi::c_ushort,
++ pub x2: core::ffi::c_ushort,
++ pub y2: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: core::ffi::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: core::ffi::c_uchar,
++ pub prev: core::ffi::c_uchar,
++ pub in_use: core::ffi::c_uchar,
++ pub padding: core::ffi::c_uchar,
++ pub age: core::ffi::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: core::ffi::c_uint,
++ pub padding: [core::ffi::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: core::ffi::c_int,
++ pub version_minor: core::ffi::c_int,
++ pub version_patchlevel: core::ffi::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut core::ffi::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut core::ffi::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut core::ffi::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 core::ffi::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: core::ffi::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: core::ffi::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: core::ffi::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = core::ffi::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 = core::ffi::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 = core::ffi::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: core::ffi::c_uint,
++ pub handle: *mut core::ffi::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: core::ffi::c_ulong,
++ pub size: core::ffi::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut core::ffi::c_void,
++ pub mtrr: core::ffi::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: core::ffi::c_int,
++ pub auth: core::ffi::c_int,
++ pub pid: core::ffi::c_ulong,
++ pub uid: core::ffi::c_ulong,
++ pub magic: core::ffi::c_ulong,
++ pub iocs: core::ffi::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::c_int,
++ pub size: core::ffi::c_int,
++ pub low_mark: core::ffi::c_int,
++ pub high_mark: core::ffi::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: core::ffi::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::c_int,
++ pub list: *mut core::ffi::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: core::ffi::c_int,
++ pub total: core::ffi::c_int,
++ pub used: core::ffi::c_int,
++ pub address: *mut core::ffi::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: core::ffi::c_int,
++ pub virtual_: *mut core::ffi::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: core::ffi::c_int,
++ pub send_count: core::ffi::c_int,
++ pub send_indices: *mut core::ffi::c_int,
++ pub send_sizes: *mut core::ffi::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: core::ffi::c_int,
++ pub request_size: core::ffi::c_int,
++ pub request_indices: *mut core::ffi::c_int,
++ pub request_sizes: *mut core::ffi::c_int,
++ pub granted_count: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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_: core::ffi::c_uint,
++ pub num: core::ffi::c_uint,
++ pub data: core::ffi::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: core::ffi::c_int,
++ pub busnum: core::ffi::c_int,
++ pub devnum: core::ffi::c_int,
++ pub funcnum: core::ffi::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = core::ffi::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: core::ffi::c_uint,
++ pub signal: core::ffi::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: core::ffi::c_uint,
++ pub tval_sec: core::ffi::c_long,
++ pub tval_usec: core::ffi::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: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++ pub type_: core::ffi::c_ulong,
++ pub physical: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: core::ffi::c_ulong,
++ pub offset: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: core::ffi::c_int,
++ pub agp_version_minor: core::ffi::c_int,
++ pub mode: core::ffi::c_ulong,
++ pub aperture_base: core::ffi::c_ulong,
++ pub aperture_size: core::ffi::c_ulong,
++ pub memory_allowed: core::ffi::c_ulong,
++ pub memory_used: core::ffi::c_ulong,
++ pub id_vendor: core::ffi::c_ushort,
++ pub id_device: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: core::ffi::c_int,
++ pub drm_di_minor: core::ffi::c_int,
++ pub drm_dd_major: core::ffi::c_int,
++ pub drm_dd_minor: core::ffi::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: [core::ffi::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 = core::ffi::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: [core::ffi::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: [core::ffi::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: core::ffi::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: core::ffi::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.5.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 = core::ffi::c_ushort;
++pub type __int32_t = core::ffi::c_int;
++pub type __uint32_t = core::ffi::c_uint;
++pub type __int64_t = core::ffi::c_long;
++pub type __uint64_t = core::ffi::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 = core::ffi::c_ulong;
++pub type drm_context_t = core::ffi::c_uint;
++pub type drm_drawable_t = core::ffi::c_uint;
++pub type drm_magic_t = core::ffi::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: core::ffi::c_ushort,
++ pub y1: core::ffi::c_ushort,
++ pub x2: core::ffi::c_ushort,
++ pub y2: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: core::ffi::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: core::ffi::c_uchar,
++ pub prev: core::ffi::c_uchar,
++ pub in_use: core::ffi::c_uchar,
++ pub padding: core::ffi::c_uchar,
++ pub age: core::ffi::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: core::ffi::c_uint,
++ pub padding: [core::ffi::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: core::ffi::c_int,
++ pub version_minor: core::ffi::c_int,
++ pub version_patchlevel: core::ffi::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut core::ffi::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut core::ffi::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut core::ffi::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 core::ffi::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: core::ffi::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: core::ffi::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: core::ffi::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = core::ffi::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 = core::ffi::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 = core::ffi::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: core::ffi::c_uint,
++ pub handle: *mut core::ffi::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: core::ffi::c_ulong,
++ pub size: core::ffi::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut core::ffi::c_void,
++ pub mtrr: core::ffi::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: core::ffi::c_int,
++ pub auth: core::ffi::c_int,
++ pub pid: core::ffi::c_ulong,
++ pub uid: core::ffi::c_ulong,
++ pub magic: core::ffi::c_ulong,
++ pub iocs: core::ffi::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::c_int,
++ pub size: core::ffi::c_int,
++ pub low_mark: core::ffi::c_int,
++ pub high_mark: core::ffi::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: core::ffi::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::c_int,
++ pub list: *mut core::ffi::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: core::ffi::c_int,
++ pub total: core::ffi::c_int,
++ pub used: core::ffi::c_int,
++ pub address: *mut core::ffi::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: core::ffi::c_int,
++ pub virtual_: *mut core::ffi::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: core::ffi::c_int,
++ pub send_count: core::ffi::c_int,
++ pub send_indices: *mut core::ffi::c_int,
++ pub send_sizes: *mut core::ffi::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: core::ffi::c_int,
++ pub request_size: core::ffi::c_int,
++ pub request_indices: *mut core::ffi::c_int,
++ pub request_sizes: *mut core::ffi::c_int,
++ pub granted_count: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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_: core::ffi::c_uint,
++ pub num: core::ffi::c_uint,
++ pub data: core::ffi::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: core::ffi::c_int,
++ pub busnum: core::ffi::c_int,
++ pub devnum: core::ffi::c_int,
++ pub funcnum: core::ffi::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = core::ffi::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: core::ffi::c_uint,
++ pub signal: core::ffi::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: core::ffi::c_uint,
++ pub tval_sec: core::ffi::c_long,
++ pub tval_usec: core::ffi::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: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++ pub type_: core::ffi::c_ulong,
++ pub physical: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: core::ffi::c_ulong,
++ pub offset: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: core::ffi::c_int,
++ pub agp_version_minor: core::ffi::c_int,
++ pub mode: core::ffi::c_ulong,
++ pub aperture_base: core::ffi::c_ulong,
++ pub aperture_size: core::ffi::c_ulong,
++ pub memory_allowed: core::ffi::c_ulong,
++ pub memory_used: core::ffi::c_ulong,
++ pub id_vendor: core::ffi::c_ushort,
++ pub id_device: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: core::ffi::c_int,
++ pub drm_di_minor: core::ffi::c_int,
++ pub drm_dd_major: core::ffi::c_int,
++ pub drm_dd_minor: core::ffi::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: [core::ffi::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 = core::ffi::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: [core::ffi::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: [core::ffi::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: core::ffi::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: core::ffi::c_uint = 64;
+--- /dev/null 1970-01-01 00:00:00 UTC
++++ cargo-crates/drm-sys-0.5.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 = core::ffi::c_ushort;
++pub type __int32_t = core::ffi::c_int;
++pub type __uint32_t = core::ffi::c_uint;
++pub type __int64_t = core::ffi::c_longlong;
++pub type __uint64_t = core::ffi::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 = core::ffi::c_ulong;
++pub type drm_context_t = core::ffi::c_uint;
++pub type drm_drawable_t = core::ffi::c_uint;
++pub type drm_magic_t = core::ffi::c_uint;
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_clip_rect {
++ pub x1: core::ffi::c_ushort,
++ pub y1: core::ffi::c_ushort,
++ pub x2: core::ffi::c_ushort,
++ pub y2: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_drawable_info {
++ pub num_rects: core::ffi::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: core::ffi::c_uchar,
++ pub prev: core::ffi::c_uchar,
++ pub in_use: core::ffi::c_uchar,
++ pub padding: core::ffi::c_uchar,
++ pub age: core::ffi::c_uint,
++}
++#[repr(C)]
++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_hw_lock {
++ pub lock: core::ffi::c_uint,
++ pub padding: [core::ffi::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: core::ffi::c_int,
++ pub version_minor: core::ffi::c_int,
++ pub version_patchlevel: core::ffi::c_int,
++ pub name_len: __kernel_size_t,
++ pub name: *mut core::ffi::c_char,
++ pub date_len: __kernel_size_t,
++ pub date: *mut core::ffi::c_char,
++ pub desc_len: __kernel_size_t,
++ pub desc: *mut core::ffi::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 core::ffi::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: core::ffi::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: core::ffi::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: core::ffi::c_int,
++}
++pub mod drm_control__bindgen_ty_1 {
++ pub type Type = core::ffi::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 = core::ffi::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 = core::ffi::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: core::ffi::c_uint,
++ pub handle: *mut core::ffi::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: core::ffi::c_ulong,
++ pub size: core::ffi::c_ulong,
++ pub type_: drm_map_type::Type,
++ pub flags: drm_map_flags::Type,
++ pub handle: *mut core::ffi::c_void,
++ pub mtrr: core::ffi::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: core::ffi::c_int,
++ pub auth: core::ffi::c_int,
++ pub pid: core::ffi::c_ulong,
++ pub uid: core::ffi::c_ulong,
++ pub magic: core::ffi::c_ulong,
++ pub iocs: core::ffi::c_ulong,
++}
++pub mod drm_stat_type {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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: core::ffi::c_int,
++ pub size: core::ffi::c_int,
++ pub low_mark: core::ffi::c_int,
++ pub high_mark: core::ffi::c_int,
++ pub flags: drm_buf_desc__bindgen_ty_1::Type,
++ pub agp_start: core::ffi::c_ulong,
++}
++pub mod drm_buf_desc__bindgen_ty_1 {
++ pub type Type = core::ffi::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: core::ffi::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: core::ffi::c_int,
++ pub list: *mut core::ffi::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: core::ffi::c_int,
++ pub total: core::ffi::c_int,
++ pub used: core::ffi::c_int,
++ pub address: *mut core::ffi::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: core::ffi::c_int,
++ pub virtual_: *mut core::ffi::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: core::ffi::c_int,
++ pub send_count: core::ffi::c_int,
++ pub send_indices: *mut core::ffi::c_int,
++ pub send_sizes: *mut core::ffi::c_int,
++ pub flags: drm_dma_flags::Type,
++ pub request_count: core::ffi::c_int,
++ pub request_size: core::ffi::c_int,
++ pub request_indices: *mut core::ffi::c_int,
++ pub request_sizes: *mut core::ffi::c_int,
++ pub granted_count: core::ffi::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 = core::ffi::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: core::ffi::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 = core::ffi::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_: core::ffi::c_uint,
++ pub num: core::ffi::c_uint,
++ pub data: core::ffi::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: core::ffi::c_int,
++ pub busnum: core::ffi::c_int,
++ pub devnum: core::ffi::c_int,
++ pub funcnum: core::ffi::c_int,
++}
++pub mod drm_vblank_seq_type {
++ pub type Type = core::ffi::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: core::ffi::c_uint,
++ pub signal: core::ffi::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: core::ffi::c_uint,
++ pub tval_sec: core::ffi::c_long,
++ pub tval_usec: core::ffi::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: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_buffer {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++ pub type_: core::ffi::c_ulong,
++ pub physical: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_binding {
++ pub handle: core::ffi::c_ulong,
++ pub offset: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_agp_info {
++ pub agp_version_major: core::ffi::c_int,
++ pub agp_version_minor: core::ffi::c_int,
++ pub mode: core::ffi::c_ulong,
++ pub aperture_base: core::ffi::c_ulong,
++ pub aperture_size: core::ffi::c_ulong,
++ pub memory_allowed: core::ffi::c_ulong,
++ pub memory_used: core::ffi::c_ulong,
++ pub id_vendor: core::ffi::c_ushort,
++ pub id_device: core::ffi::c_ushort,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_scatter_gather {
++ pub size: core::ffi::c_ulong,
++ pub handle: core::ffi::c_ulong,
++}
++#[repr(C)]
++#[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
++pub struct drm_set_version {
++ pub drm_di_major: core::ffi::c_int,
++ pub drm_di_minor: core::ffi::c_int,
++ pub drm_dd_major: core::ffi::c_int,
++ pub drm_dd_minor: core::ffi::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: [core::ffi::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 = core::ffi::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: [core::ffi::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: [core::ffi::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: core::ffi::c_uint = 128;
++pub const DRM_MODE_PROP_OBJECT: core::ffi::c_uint = 64;
diff --git a/x11-wm/cosmic-comp/files/patch-no-systemd b/x11-wm/cosmic-comp/files/patch-no-systemd
new file mode 100644
index 000000000000..8aac3b483513
--- /dev/null
+++ b/x11-wm/cosmic-comp/files/patch-no-systemd
@@ -0,0 +1,28 @@
+Avoid various systemd dependencies
+
+--- data/cosmic.desktop.orig 2024-01-29 00:48:40 UTC
++++ data/cosmic.desktop
+@@ -1,7 +1,7 @@ Commment=This session logs you into Cosmic
+ [Desktop Entry]
+ Name=Cosmic
+ Commment=This session logs you into Cosmic
+-Exec=/usr/bin/cosmic-service
++Exec=cosmic-comp
+ Type=Application
+ DesktopNames=pop:COSMIC
+ X-GDM-SessionRegisters=false
+\ No newline at end of file
+--- src/main.rs.orig 2024-01-29 00:48:40 UTC
++++ src/main.rs
+@@ -35,6 +35,11 @@ fn main() -> Result<()> {
+ logger::init_logger()?;
+ info!("Cosmic starting up!");
+
++ // Advise xdg-desktop-portal which *-portals.conf to load
++ std::env::set_var("XDG_CURRENT_DESKTOP", "cosmic");
++ // Mimic wlroots, used by https://github.com/qt/qtbase/commit/4b4870a12cd9
++ std::env::set_var("XDG_SESSION_TYPE", "wayland");
++
+ // init event loop
+ let mut event_loop = EventLoop::try_new().with_context(|| "Failed to initialize event loop")?;
+ // init wayland
diff --git a/x11-wm/cosmic-comp/pkg-descr b/x11-wm/cosmic-comp/pkg-descr
new file mode 100644
index 000000000000..0c8146ef1751
--- /dev/null
+++ b/x11-wm/cosmic-comp/pkg-descr
@@ -0,0 +1 @@
+Compositor for the COSMIC desktop environment