VirtIO GPU: - Removed QEMU 11.x command type swap hack (0x0104↔0x0106). The hack was wrong — swapping types without swapping data formats meant handlers read wrong struct layouts. Commands returned OK but did nothing. - Restored correct VirtIO spec command types. - Removed broken test pattern (fill + flush that never displayed). - GPU setup now reports success/failure without crashing. Display server resilience: - VirtioFramebuffer::new() → try_new() -> Option<Self>. Returns None if phys-info page is unmapped or has zero dimensions. - bins/display-qemu: tries VirtioFramebuffer, falls back to MockFramebuffer. Display server runs headless instead of crashing. - No more page faults when GPU is absent. The GPU driver code is architecturally correct (proper VirtIO commands, proper data formats) but doesn't produce visible output on QEMU 11.x due to a suspected QEMU legacy MMIO bug where transfer_to_host_2d succeeds but doesn't transfer data. The driver is ready for when this is fixed or a different QEMU version is used.
20 lines
453 B
TOML
20 lines
453 B
TOML
[package]
|
|
name = "display-qemu"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[[bin]]
|
|
name = "display-qemu"
|
|
test = false
|
|
bench = false
|
|
|
|
[dependencies]
|
|
types = { workspace = true }
|
|
userspace-rt = { workspace = true }
|
|
userspace = { workspace = true }
|
|
server-framework = { workspace = true }
|
|
display-server = { workspace = true }
|
|
driver-framebuffer-virtio = { workspace = true }
|
|
driver-framebuffer-mock = { workspace = true }
|
|
port-framebuffer = { workspace = true }
|