5 个不稳定版本

0.3.0 2023年11月14日
0.2.2 2023年1月3日
0.2.1 2022年8月29日
0.2.0 2021年5月7日
0.1.0 2017年9月11日

#202 in 图形 API

Download history • Rust 包仓库 5672/week @ 2024-03-14 • Rust 包仓库 6835/week @ 2024-03-21 • Rust 包仓库 6275/week @ 2024-03-28 • Rust 包仓库 5372/week @ 2024-04-04 • Rust 包仓库 5010/week @ 2024-04-11 • Rust 包仓库 7033/week @ 2024-04-18 • Rust 包仓库 5673/week @ 2024-04-25 • Rust 包仓库 7738/week @ 2024-05-02 • Rust 包仓库 8115/week @ 2024-05-09 • Rust 包仓库 7450/week @ 2024-05-16 • Rust 包仓库 6682/week @ 2024-05-23 • Rust 包仓库 6655/week @ 2024-05-30 • Rust 包仓库 15604/week @ 2024-06-06 • Rust 包仓库 25256/week @ 2024-06-13 • Rust 包仓库 21490/week @ 2024-06-20 • Rust 包仓库 18960/week @ 2024-06-27 • Rust 包仓库

82,364 每月下载量
用于 13 个包 (直接使用 3 个)

MIT 许可证

15KB
365 代码行

为 Rust 提供安全的 libgbm 绑定

通用缓冲区管理器

此模块提供了一种抽象,调用者可以使用它从平台的底层内存管理系统请求缓冲区。

这允许创建可移植的代码,同时仍然允许访问底层的内存管理器。

此库最好与 drm-rs 结合使用,通过 drm-support 功能提供。

使用方法

添加到您的 Cargo.toml 中

gbm = "0.15.0"

示例

extern crate drm;
extern crate gbm;

use drm::control::{self, crtc, framebuffer};
use gbm::{BufferObjectFlags, Device, Format};

// ... init your drm device ...
let drm = init_drm_device();

// init a GBM device
let gbm = Device::new(drm).unwrap();

// create a buffer
let mut bo = gbm
    .create_buffer_object::<()>(
        1280,
        720,
        Format::Argb8888,
        BufferObjectFlags::SCANOUT | BufferObjectFlags::WRITE,
    )
    .unwrap();

// write something to it (usually use import or egl rendering instead)
let buffer = {
    let mut buffer = Vec::new();
    for i in 0..1280 {
        for _ in 0..720 {
            buffer.push(if i % 2 == 0 { 0 } else { 255 });
        }
    }
    buffer
};
bo.write(&buffer).unwrap();

// create a framebuffer from our buffer
let fb = gbm.add_framebuffer(&bo, 32, 32).unwrap();

// display it (and get a crtc, mode and connector before)
gbm.set_crtc(crtc_handle, Some(fb), (0, 0), &[con], Some(mode))
    .unwrap();

依赖项

~175KB