Commit Graph

1217 Commits

Author SHA1 Message Date
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
bjorn3 4c4ab2de44 graphics: Implement handoff from vesad to virtio-gpud
With this virtio-gpud no longer has to support getting deactivated at
any time to hand back control to vesad. This makes it much easier to add
many new features that a proper graphics driver is supposed to support.

Be aware that virtio-gpud waits for the vsync on every flush request.
Fbcond and orbital are not really happy about this right now and when
something changes multiple times within a single frame, flush requests
queue up, causing the ui to hang until all flush requests are finished.
It is still possible to switch to another VT though which won't hang.
2024-12-23 18:59:18 +01:00
Jeremy Soller 8df2350641 Merge branch 'virtio_gpud_multiple_vts' into 'master'
virtio-gpud: Handle multiple VT's

See merge request redox-os/drivers!212
2024-12-23 17:02:29 +00:00
bjorn3 b9189b91cf virtio-gpud: Couple minor improvements 2024-12-23 13:40:09 +01:00
bjorn3 b0f682c95d virtio-gpud: Handle multiple VT's
The code will become simpler once handoff is implemented such that
virtio-gpud no longer needs to support reset and reinitialization of the
virtio gpu device.
2024-12-23 13:40:09 +01:00
bjorn3 31deddd0d5 virtio-gpud: Claim a new VT
Before these changes virtio-gpud effectively didn't do anything and
vesad's framebuffer was kept instead.
2024-12-23 12:50:41 +01:00
Jeremy Soller f954cd4ab7 Merge branch 'fbcond_nonblocking' into 'master'
fbcond: Make sure we never block on the graphics driver

See merge request redox-os/drivers!211
2024-12-22 20:13:22 +00:00
bjorn3 c97652a508 fbcond: Make sure we never block on the graphics driver
To prevent deadlocks if the graphics driver in turn tries to write to
fbcond for log messages.
2024-12-22 19:56:04 +01:00
bjorn3 5f7ee8f646 Use inputd's Damage everywhere instead of separate SyncRect types 2024-12-22 19:48:27 +01:00
bjorn3 15cee6bb48 fbcond: Resize ransid console on every write
This is necessary to correctly handle async changes to the framebuffer
size in the future.
2024-12-22 18:37:13 +01:00
bjorn3 99a00abeca fbcond: Split a couple of helper functions out of open_vt 2024-12-22 18:08:32 +01:00
Jeremy Soller 8b601fb155 Merge branch 'inputd_pull_vt_events' into 'master'
inputd: Major refactorings to the inputd interface

See merge request redox-os/drivers!210
2024-12-22 16:56:49 +00:00
Jeremy Soller 78256bad96 Merge branch 'migrate_gpu_drivers_to_redox_scheme' into 'master'
Migrate gpu drivers to redox-scheme

See merge request redox-os/drivers!209
2024-12-22 16:56:01 +00:00
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 436a16b069 virtio-gpud: Migrate to redox-scheme 2024-12-22 16:44:27 +01:00
bjorn3 7565720f34 vesad: Migrate to redox-scheme 2024-12-22 16:43:17 +01:00
Jeremy Soller 64ede1f3d5 Merge branch 'inputd_redox_scheme' into 'master'
Various inputd improvements

See merge request redox-os/drivers!208
2024-12-22 02:26:13 +00:00
bjorn3 3c00151d49 inputd: Remove the vt handle mutex 2024-12-21 16:15:19 +01:00
bjorn3 cf84e71220 inputd: Use std's concurrency primitives instead of spin 2024-12-21 16:00:34 +01:00
bjorn3 08f619bc22 inputd: Remove usage of Arc for Vt
Storing the vt index instead of a direct reference to the vt is just as
easy.
2024-12-21 15:58:07 +01:00
bjorn3 6a1cb33105 inputd: Misc changes 2024-12-21 15:52:36 +01:00
bjorn3 f4193c6886 inputd: Avoid panic when client tried to perform invalid operation 2024-12-21 15:43:23 +01:00
bjorn3 0b2111b029 Port inputd to redox-scheme 2024-12-21 14:53:12 +01:00
Jeremy Soller 1d2f3b4836 Merge branch 'irq' into 'master'
Fix Raspberry 3

See merge request redox-os/drivers!207
2024-12-18 18:20:41 +00:00
Andrey Turkin 63b1d2cf8a bcm2835-sdhcid: remap mmio range as instructed by DTB 2024-12-18 21:16:33 +03:00
Andrey Turkin e5e753a426 Sync up with changes to kernel's phandle irq scheme 2024-12-18 21:16:30 +03:00
Andrey Turkin 2f9e28e23e Rerun cargo fmt to bring CI back to norm 2024-12-18 21:16:17 +03:00
Jeremy Soller 5cf8bfda72 xhcid: remove transfer states on dead rings 2024-11-11 14:27:32 -07:00
Jeremy Soller 842fc73a34 Track all drivers launched for a port 2024-11-11 12:51:22 -07:00
Jeremy Soller 191c7973a9 Fix deadlock in xhcid detach_device 2024-11-11 12:10:01 -07:00
Jeremy Soller 6044ca0471 Merge branch 'fix_deadlock_in_usb_driver' into 'master'
Fixed the deadlock by only addressing devices in response to attach requests....

See merge request redox-os/drivers!199
2024-11-05 17:35:57 +00:00
Timothy Finnegan 4dedbac4e5 Fixed the deadlock by only addressing devices in response to attach requests.... 2024-11-05 17:35:57 +00:00
Jeremy Soller 3f33cb96e7 usbhidd: update rehid 2024-11-04 20:19:18 -07:00
Jeremy Soller 8a36c994e1 Add hwd 2024-11-04 20:19:08 -07:00
Jeremy Soller 6ff633863e Allow usbhidd to run on multiple interfaces 2024-11-04 16:15:53 -07:00
Jeremy Soller 2975f93f30 acpid: fix compilation on riscv64gc 2024-10-31 10:53:05 -06:00
Jeremy Soller e765d9c8e1 acpid: only build dmar for x86_64 2024-10-30 20:43:46 -06:00
Jeremy Soller 71b70482d3 acpid: Only acquire I/O port rights on x86 2024-10-30 14:01:20 -06:00
Jeremy Soller 42970953fc Fix acpid compilation on non-x86 2024-10-30 13:52:19 -06:00
Jeremy Soller 382b298453 acpid: provide buffer contents from amlserde 2024-10-29 18:34:27 -06:00
Jeremy Soller 621456ed0e Merge branch 'riscv' into 'master'
Remap PCI IRQs as instructed in FDT

See merge request redox-os/drivers!206
2024-10-22 18:39:13 +00:00
Andrey Turkin 8152de14a9 Remap PCI IRQs as instructed in FDT 2024-10-22 20:33:35 +03:00
Jeremy Soller 67f4ca3d73 Update redox-scheme 2024-10-18 07:32:38 -06:00
Jeremy Soller ea8ac9ad5f Merge branch 'stage' into 'master'
Initial RISC-V support

See merge request redox-os/drivers!205
2024-10-18 01:46:52 +00:00
Andrey Turkin 18b688a49c Partial risc-v support 2024-10-17 20:07:17 +03:00
Andrey Turkin 09b5033fbd Wholesale cargo fmt to get CI back to green 2024-10-17 20:07:05 +03:00
Ribbon 17b2f5eab1 Add a description section and a template on the "COMMUNITY-HW.md" document 2024-10-10 14:30:33 +00:00
Ribbon c1d1ab6031 Merge branch 'community-hw' into 'master'
Move the community hardware tracking issue to the "COMMUNITY-HW.md" document

See merge request redox-os/drivers!204
2024-10-10 14:12:02 +00:00
Ribbon c5c87169ef Move the community hardware tracking issue to the "COMMUNITY-HW.md" document 2024-10-10 14:12:02 +00:00