| commit | b46ad949f4ab5d908ed58926012296c23f9ce650 | [log] [tgz] |
|---|---|---|
| author | James Farrell <[email protected]> | Tue Aug 27 13:31:50 2024 +0000 |
| committer | James Farrell <[email protected]> | Tue Aug 27 13:31:50 2024 +0000 |
| tree | eb09ce53cec355c59d4aa2a1b0ef851cacd63b02 | |
| parent | bc08bb024e105440b15632507349f653f4f248e4 [diff] |
Migrate 25 crates to monorepo. env_logger epoll errno fallible-iterator fallible-streaming-iterator fastrand flagset fragile fs-err futures futures-core futures-executor futures-io futures-macro futures-sink futures-task futures-test futures-util gbm getrandom glob googletest googletest_macro h2 hashbrown Bug: 339424309 Test: treehugger Change-Id: Iae0c2b23ecaa01f97c1a53b81c90034b768113b4
libgbm bindings for rustThe Generic Buffer Manager
This module provides an abstraction that the caller can use to request a buffer from the underlying memory management system for the platform.
This allows the creation of portable code whilst still allowing access to the underlying memory manager.
This library is best used in combination with drm-rs, provided through the drm-support feature.
Add to your Cargo.toml
gbm = "0.14.2"
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();