crosvm/gpu_display/examples/simple_open.rs
Zach Reizner f5285c647a gpu_display: add X11 backend
This change adds an X11 backend to the gpu_display crate. With this
addition, the virtio-gpu device can display to traditional linux
desktops that only have X11 output.

Change-Id: I86c80cac91ca5bdc97588194a44040273ae69385
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1591572
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
Commit-Queue: Zach Reizner <zachr@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Auto-Submit: Zach Reizner <zachr@chromium.org>
2019-07-25 22:15:48 +00:00

25 lines
721 B
Rust

use gpu_display::GpuDisplay;
fn main() {
let mut disp = GpuDisplay::open_x(None::<&str>).unwrap();
let surface_id = disp.create_surface(None, 1280, 1024).unwrap();
let mem = disp.framebuffer(surface_id).unwrap();
for y in 0..1024 {
let mut row = [0u32; 1280];
for x in 0..1280 {
let b = ((x as f32 / 1280.0) * 256.0) as u32;
let g = ((y as f32 / 1024.0) * 256.0) as u32;
row[x] = b | (g << 8);
}
mem.as_volatile_slice()
.offset((1280 * 4 * y) as u64)
.unwrap()
.copy_from(&row);
}
disp.flip(surface_id);
while !disp.close_requested(surface_id) {
disp.dispatch_events();
}
}