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