#![allow(dead_code)]
pub use drm::control::Device as ControlDevice;
pub use drm::Device;
pub use drm::control::property::*;
pub use drm::control::ResourceHandle;
#[derive(Debug)]
pub struct Card(std::fs::File);
impl std::os::unix::io::AsRawFd for Card {
fn as_raw_fd(&self) -> std::os::unix::io::RawFd {
self.0.as_raw_fd()
}
}
impl Device for Card {}
impl ControlDevice for Card {}
impl Card {
pub fn open(path: &str) -> Self {
let mut options = std::fs::OpenOptions::new();
options.read(true);
options.write(true);
Card(options.open(path).unwrap())
}
pub fn open_global() -> Self {
Self::open("/dev/dri/card0")
}
}
pub mod capabilities {
use drm::ClientCapability as CC;
pub const CLIENT_CAP_ENUMS: &[CC] = &[CC::Stereo3D, CC::UniversalPlanes, CC::Atomic];
use drm::DriverCapability as DC;
pub const DRIVER_CAP_ENUMS: &[DC] = &[
DC::DumbBuffer,
DC::VBlankHighCRTC,
DC::DumbPreferredDepth,
DC::DumbPreferShadow,
DC::Prime,
DC::MonotonicTimestamp,
DC::ASyncPageFlip,
DC::CursorWidth,
DC::CursorHeight,
DC::AddFB2Modifiers,
DC::PageFlipTarget,
DC::CRTCInVBlankEvent,
DC::SyncObj,
];
}
pub mod images {
use image;
pub fn load_image(name: &str) -> image::RgbaImage {
let path = format!("examples/images/{}", name);
image::open(path).unwrap().to_rgba8()
}
}