Commit Graph

14 Commits

Author SHA1 Message Date
bjorn3 8e92e2c743 inputd: Let graphics drivers pull vt activation events from inputd
Previously inputd would directly push vt activation events to the
graphics driver, which required being quite lazy to prevent deadlocks as
well as the graphics driver having a location where events can be pushed
to. By having graphics drivers pull the vt activation events instead,
the effective control flow becomes simpler and it becomes easier to
correctly handle multiple graphics drivers on the system. For example it
becomes possible for multiple graphics drivers to present displays for a
single VT as well as making it easier to provide a handoff from the
early framebuffer to a real graphics driver.
2024-12-22 17:18:24 +01:00
bjorn3 273cbda872 inputd: Split ControlHandle and DisplayHandle
ControlHandle is used to switch the active vt, while DisplayHandle is
used by display drivers to register new vt's. There are entirely
unrelated tasks and the fact that they had been merged together has been
confusing me for a while.

Also changed activating a VT to no longer create a new vt when none
existed previously. The target graphics driver may not be able to handle
the new VT. inputd -A already didn't allow activating non-existent VT's
as it first tried to open a consumer handle for the target VT.
2024-12-22 16:46:02 +01:00
bjorn3 7565720f34 vesad: Migrate to redox-scheme 2024-12-22 16:43:17 +01:00
bjorn3 66c1d0fd88 Tell the kernel to disable graphical_debug right before the first framebuffer write by userspace
Also remove the framebuffer clear in FrameBuffer::new as the entire
framebuffer will be overwritten anyway almost immediately after.
2024-07-24 21:06:29 +02:00
bjorn3 2e341fa742 Directly pass FrameBuffer to redraw and sync
This avoids creating an intermediate &'static mut [u32] of questionable
soundness and simplifies the code a bit.
2024-07-19 22:18:34 +02:00
bjorn3 53c02b5322 Move the framebuffer resizing code into a FrameBuffer method 2024-07-19 22:12:48 +02:00
bjorn3 857773393d Ensure fields of SyncRect are not reordered
Without repr(C), repr(packed) technically allows reordering fields.
2024-07-19 21:56:56 +02:00
bjorn3 ef29520cf5 Avoid ptr2int2ptr casts in GraphicScreen::sync
Also use pointer arithmetic on *mut u32 over manual multiplication by 4.
The ptr2int2ptr casts pessimize optimizations.
2024-07-19 21:55:21 +02:00
bjorn3 747898dfb2 Run rustfmt on the entire graphics subsystem 2024-07-19 21:24:48 +02:00
bjorn3 ebb2243538 Remove all traces of VtMode
It isn't used anywhere anymore.
2024-07-19 21:18:09 +02:00
Jacob Lorentzon ff956fd3bb Switch to libredox where applicable (fixed) 2024-03-18 22:09:25 +00:00
Jeremy Soller 98078650f8 Revert "Switch to libredox where applicable."
This reverts commit 2e7dbf1cc1.
2024-03-18 15:00:52 -06:00
4lDO2 2e7dbf1cc1 Switch to libredox where applicable. 2024-03-18 19:23:05 +01:00
bjorn3 887412daf5 Move all graphics related drivers to graphics/ 2024-02-29 15:41:05 +01:00