commit | 5fa5c89761d6436ce5111fa7189fd37776b9f0e4 | [log] [tgz] |
---|---|---|
author | James Farrell <jamesfarrell@google.com> | Tue May 21 15:04:09 2024 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Tue May 21 15:04:09 2024 +0000 |
tree | f9badcec5d7461ffcac10972777ce8a3915cb852 | |
parent | 0462b8d1526acb8e9645653172d58cfcee1cdaaa [diff] | |
parent | e2e13be73a14ab61dfb3dfcea601f70618621b0d [diff] |
Update Android.bp by running cargo_embargo am: dd4c6879e3 am: e2e13be73a Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/gbm/+/3095485 Change-Id: Idc6c509524351f48ba8097cd3555c0730bda7fdb Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
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();