Commit Graph

1266 Commits

Author SHA1 Message Date
bjorn3 5af43fcaa2 graphics/vesad: Merge OffscreenBuffer into GraphicScreen 2024-12-28 14:51:02 +01:00
bjorn3 b5eeaed9e1 graphics/virtio-gpud: Use resource size rather than display size in set_scanout
This ensures we use the right size if the display got resized but the
resource hasn't been resized yet.
2024-12-28 14:32:56 +01:00
bjorn3 0b8648ff5b graphics/virtio-gpud: Move some initialization code around 2024-12-28 14:16:56 +01:00
bjorn3 1ef298e576 graphics/virtio-gpud: Remove getters and setters for ResourceCreate2d 2024-12-28 14:04:10 +01:00
bjorn3 1d89ca7bd2 graphics/virtio-gpud: Remove unnecessary VolatileCell
The virtio queue abstraction already provides the necessary
synchronization to make everything data-race free without volatile
accesses.
2024-12-28 14:01:09 +01:00
bjorn3 9afe3b390b graphics/vesad: Remove all usage of unstable features 2024-12-27 15:57:43 +01:00
bjorn3 ed9ad1aaf1 graphics/vesad: Remove old resizing code
Graphics clients will need to handle resizing themself anyway for
handoff between graphics drivers and as such don't need the graphics
to modify the framebuffer during resize.
2024-12-27 15:57:18 +01:00
Jeremy Soller ee62075339 Merge branch 'unused_dup_impls' into 'master'
Remove all dup impls that only accept empty paths

See merge request redox-os/drivers!220
2024-12-27 14:14:23 +00:00
bjorn3 b1743d800c Remove all dup impls that only accept empty paths
Those dups are handled by the kernel already by creating a new reference
to the underlying file descriptor.
2024-12-27 15:13:42 +01:00
Jeremy Soller 91f76826c0 Merge branch 'fix_multiple_virtio_displays' into 'master'
graphics/virtio-gpud: Don't crash when multiple displays are attached

See merge request redox-os/drivers!224
2024-12-27 14:13:00 +00:00
bjorn3 d7becba023 graphics/virtio-gpud: Don't crash when multiple displays are attached 2024-12-27 15:11:15 +01:00
Jeremy Soller fed2e0fb40 Merge branch 'driver_graphics_crate' into 'master'
Add driver-graphics crate

See merge request redox-os/drivers!223
2024-12-27 14:03:27 +00:00
bjorn3 d2f1af9ca7 Add driver-graphics crate
This unifies the driver interface handling between graphics drivers and
makes it easier to change all graphics drivers in lockstep when adding
new features.
2024-12-27 12:47:43 +01:00
Jeremy Soller 365a018bb1 Merge branch 'virtio_gpud_refactor' into 'master'
Various virtio-gpud improvements

See merge request redox-os/drivers!222
2024-12-27 01:32:28 +00:00
bjorn3 b7f4af9bd2 graphics/virtio-gpud: Bring scheme impl closer in line with vesad 2024-12-26 22:19:35 +01:00
bjorn3 6f188cf7ef graphics/fbcond: Unmap old offscreen buffer on handoff and resize 2024-12-26 21:58:41 +01:00
bjorn3 bf6e16c8c9 graphics/console-draw: Slightly simplify TextScreen::write 2024-12-26 21:58:07 +01:00
bjorn3 3fbf0fecbb graphics/console-draw: Fix resizing to a smaller display
Without this commit ransid would generate move events with an
underflowed height which take forever to process.
2024-12-26 21:57:41 +01:00
bjorn3 1b6feeb7c7 graphics/virtio-gpud: Use VM window size as display size
Rather than hard coding 1920x1080. This doesn't yet handle resizing the
VM window at runtime though.
2024-12-26 20:59:08 +01:00
bjorn3 3ed3ff2edb graphics/fbcond: Handle framebuffer resize during handoff 2024-12-26 20:57:53 +01:00
bjorn3 09de72e9a8 common: Fix mmap overwriting unintended memory in Sgl
If unaligned_length is for example 8193, the initial reservation would
be rounded up to the next page resulting in 12288. However the physmap
would previously round up to the next power of two forming 16384,
potentially overwriting one page of data directly after the reservation.
In case of bigger allocations, more pages could be overwritten.
2024-12-26 20:50:44 +01:00
bjorn3 62f1a80c3e graphics/virtio-gpud: Move resources from Display to GpuScheme
Resources are global for the entire virtio-gpud device, not local to a
single display. In the future resource creation will become entirely
detached from specific displays.
2024-12-26 17:53:45 +01:00
bjorn3 2344206c21 graphics/virtio-gpud: Bundle resource id and resource mapping 2024-12-26 17:36:40 +01:00
Jeremy Soller 65d84afea6 Merge branch 'unused_imports' into 'master'
Fix a ton of unused import warnings

See merge request redox-os/drivers!219
2024-12-26 15:55:10 +00:00
Jeremy Soller 921c6b07f9 Merge branch 'driver_network_redox_scheme' into 'master'
Use redox-scheme in driver-network

See merge request redox-os/drivers!218
2024-12-26 15:54:44 +00:00
bjorn3 2c042f8c98 Fix a ton of unused import warnings 2024-12-26 16:05:04 +01:00
bjorn3 8eabb75524 Update redox-scheme to 0.3.0 2024-12-26 15:50:30 +01:00
bjorn3 20cd7b6dcd driver-network: Use handle flags and offset stored by the kernel 2024-12-26 15:50:10 +01:00
bjorn3 c4dbcbecf2 Use redox-scheme in driver-network 2024-12-26 15:50:09 +01:00
Jeremy Soller be6e942a08 Merge branch 'split_fbbootlogd' into 'master'
graphics: Introduce a separate daemon for the boot log

See merge request redox-os/drivers!217
2024-12-24 21:31:00 +00:00
bjorn3 12fc959737 graphics/fbcond: Move blocking operations back to the main thread
With fbbootlogd split out it is no longer essential to avoid blocking
operations on the main thread of fbcond. Moving them back to the main
thread simplifies things a fair bit.
2024-12-24 21:39:41 +01:00
bjorn3 4e2f1a730c graphics: Introduce a separate daemon for the boot log
The daemon responsible for the boot log must never ever block to avoid
deadlocks, but doing so while still accepting keyboard input is
non-trivial. This commit splits the boot log out from fbcond into a
separate daemon to make this a lot easier to implement. This will also
allow making fbcond blocking again, which will simplify some things.
2024-12-24 21:39:41 +01:00
Jeremy Soller 911f966e15 Merge branch 'input_improvements' into 'master'
Couple of graphics and input subsystem refactorings

See merge request redox-os/drivers!216
2024-12-24 19:37:59 +00:00
bjorn3 5a1648fdca graphics/fbcond: Migrate to redox-scheme 2024-12-24 16:56:11 +01:00
bjorn3 f4897c59b4 graphics/fbcond: Inline some helpers 2024-12-24 16:34:25 +01:00
bjorn3 aa35e573cf input: Introduce ProducerHandle type 2024-12-24 15:28:56 +01:00
bjorn3 e3eb5fbb5d input/ps2d: Use redox_event 2024-12-24 15:28:56 +01:00
bjorn3 0789069afc input: Move all input drivers to a subdirectory 2024-12-24 15:28:56 +01:00
Jeremy Soller 9cf225fdc1 Merge branch 'misc_changes' into 'master'
graphics: Couple of misc changes

See merge request redox-os/drivers!215
2024-12-24 14:17:43 +00:00
bjorn3 84eed1ad0e graphics: Introduce new ConsumerHandle type
This type has a method to open the current display.
2024-12-24 14:49:42 +01:00
bjorn3 a82fa31437 graphics/fbcond: Get display path in the background thread 2024-12-24 14:49:42 +01:00
bjorn3 a88f2c4b53 graphics/vesad: Remove support for reading resize events
Nobody actually listens for them from vesad itself anyway. Instead they
listen for them from inputd.
2024-12-24 14:49:42 +01:00
Jeremy Soller a09d0fb761 Merge branch 'fix_vesad_damage_clip' into 'master'
vesad: Fix damage clipping

See merge request redox-os/drivers!214
2024-12-23 20:33:50 +00:00
bjorn3 db9ee0a495 vesad: Fix damage clipping
oops
2024-12-23 21:29:57 +01:00
Jeremy Soller 4c1658bbfe Merge branch 'graphics_handover' into 'master'
graphics: Implement handoff from vesad to virtio-gpud

See merge request redox-os/drivers!213
2024-12-23 19:10:21 +00:00
bjorn3 05a6058131 Rustfmt 2024-12-23 19:05:00 +01:00
bjorn3 0019eecadd virtio-gpud: Don't process flush requests for background VT's
This ensures that the foreground VT doesn't lockup if a background VT
spams us with flush requests. In the future we may want to add a
scheduler or collapse redundant flush requests.
2024-12-23 19:02:24 +01:00
bjorn3 025086acd1 virtio-gpud: Add offset method to XferToHost2d
This will hopefully avoid confusion if someone in the future changes the
XferToHost2d in flush to pass a smaller GpuRect. Without adjusting
offset this would cause glitches.
2024-12-23 19:02:24 +01:00
bjorn3 f6cc7d25df graphics: Unify damage clipping 2024-12-23 19:02:24 +01:00
bjorn3 f2156d4654 graphics: Optimize the damage buffer api
It is now possible to write multiple damage locations in a single write
call. Vesad also no longer processes damage for background vt's. The
entire framebuffer will be redrawn once the vt switches to the
foreground anyway. And finally fsync now consistently redraws the entire
screen rather than having different behavior between vesad and
virtio-gpud.
2024-12-23 19:02:24 +01:00