fix: VirtIO GPU driver and snake rendering through display server
- Fix swapped command IDs: attach_backing was 0x0104 (FLUSH), resource_flush was 0x0106 (ATTACH_BACKING). Now correct. - Increase process stack from 4 pages (16 KB) to 16 pages (64 KB) to prevent stack overflow in display process. - Restructure display-qemu to avoid MockFramebuffer's 32 KB array inflating the VirtIO path's stack frame. - Wire snake app to render through display server via IPC instead of UART escape codes. Uses existing renderer.rs pixel renderer. - Init now delegates display endpoint to snake process.
This commit is contained in:
@@ -10,16 +10,29 @@ extern "C" fn main() {
|
||||
let ep = CapSlot::const_new(0);
|
||||
|
||||
if let Some(fb) = driver_framebuffer_virtio::VirtioFramebuffer::try_new() {
|
||||
let mut srv = display_server::server::DisplayServer::new(fb);
|
||||
server_framework::serve(&mut srv, ep);
|
||||
run_virtio(fb, ep);
|
||||
} else {
|
||||
let fb = driver_framebuffer_mock::MockFramebuffer::new(
|
||||
types::display::Dimension::new(640),
|
||||
types::display::Dimension::new(480),
|
||||
);
|
||||
let mut srv = display_server::server::DisplayServer::new(fb);
|
||||
server_framework::serve(&mut srv, ep);
|
||||
run_mock(ep);
|
||||
}
|
||||
|
||||
loop { userspace::syscall::yield_now(); }
|
||||
}
|
||||
|
||||
#[inline(never)]
|
||||
fn run_virtio(mut fb: driver_framebuffer_virtio::VirtioFramebuffer, ep: CapSlot) {
|
||||
use port_framebuffer::Framebuffer;
|
||||
fb.clear(types::display::Color::rgb(30, 30, 60));
|
||||
fb.flush();
|
||||
let mut srv = display_server::server::DisplayServer::new(fb);
|
||||
server_framework::serve(&mut srv, ep);
|
||||
}
|
||||
|
||||
#[inline(never)]
|
||||
fn run_mock(ep: CapSlot) {
|
||||
let fb = driver_framebuffer_mock::MockFramebuffer::new(
|
||||
types::display::Dimension::new(640),
|
||||
types::display::Dimension::new(480),
|
||||
);
|
||||
let mut srv = display_server::server::DisplayServer::new(fb);
|
||||
server_framework::serve(&mut srv, ep);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user