
CHANGELOG 0.1.3.md — Notepad
Added
- A shared
virtio_pci base for modern virtio drivers over PCI/MMIO, reused
by virtio-input and prepared for synchronous polling queues.
- A new 2D
virtio-gpu driver for QEMU, with MVP support for
GET_DISPLAY_INFO, RESOURCE_CREATE_2D, RESOURCE_ATTACH_BACKING,
SET_SCANOUT, TRANSFER_TO_HOST_2D and RESOURCE_FLUSH.
- A new
/dev/gpu0 node with the public ABI GPU_IOC_GET_INFO,
GPU_IOC_ACQUIRE, GPU_IOC_RELEASE, GPU_IOC_PRESENT and
GPU_IOC_PRESENT_REGION.
- A new
gputest utility to validate the direct presentation path over
/dev/gpu0.
- Calibration of the
local APIC/x2APIC timer against the RTC/CMOS during boot
so that uptime_ms and sleep_ms line up better with real time in QEMU.
Changed
/dev/fb0 keeps compatibility with the existing fullscreen apps, but can now
present over virtio-gpu when the backend is available.
- The QEMU profile in
build.ps1 run now adds virtio-vga with
xres=1280,yres=800, and limine.conf asks for 1280x800x32 so the boot
framebuffer and the graphics backend line up during the handoff.
- The console and the fullscreen UI can stay visible over
virtio-gpu's primary
resource, including the return from exclusive graphics sessions and a clean
redraw of the whole shell with no residue at the margins.
virtio-gpu now tries to keep the boot framebuffer's large mode before falling
back to the native scanout the device reports, preventing the system from
returning to 640x480 at the end of boot when the larger mode is accepted.
virtio-input moved to using the active framebuffer's effective geometry to
normalize the absolute tablet, fixing the mouse desyncing from the host after
the switch to virtio-gpu.
- The kernel heap stopped being linear-only and now recycles freed blocks, does
split/coalesce and can return whole arenas to the physical allocator when
they end up empty.
- The POSIX runtime of
subsystems/posix/sdk/v1 replaced its arena/bump
allocator with a fixed recyclable heap, so malloc, free, calloc and
realloc now reuse memory in external apps.
sdk/doomgeneric no longer runs accelerated by an incorrect base clock; game
time is back on a time backend closer to real, leaving the remaining
performance tuning on the port's side.
Known limits
- This
virtio-gpu MVP visibly improves the fullscreen GUI in QEMU, but pixel
upload is still synchronous, copied by the CPU, with no mmap, page flipping
or real double buffering.
- Porting apps to
/dev/gpu0 reduces layers and sets up the evolution better,
but the big improvement in smoothness is left for a later stage with shared
buffers and less blocking presentation.
- The final performance of large external ports such as
sdk/doomgeneric still
depends heavily on the scaling cost and the frame size once the system runs at
higher resolutions.
Version 0.1.32026-03-170 changes