Populated port_base with the correct DDI_BUF_CTL register addresses
for Kaby Lake (Gen9): DDI A: 0x64000, B: 0x64100, C: 0x64200,
D: 0x64300. Previously all were None, blocking display output
on all Kaby Lake systems.
Cross-referenced with Linux 7.1 i915 display/intel_ddi.c and
IHD-OS-KBL-Vol 2c-1.17. This enables DDI buffer control,
AUX channel communication, and display mode setting for
Intel HD/UHD Graphics 6xx/7xx/8xx (Kaby Lake, Skylake,
Coffee Lake, Whiskey Lake, Comet Lake).
Uncommented VIRTIO_GPU_F_VIRGL (bit 0) and added feature
negotiation in probe_device(). When the host supports VirGL 3D,
the driver now acknowledges the feature, enabling Mesa's virgl
driver to use the 3D command path (CTX_CREATE, SUBMIT_3D,
RESOURCE_CREATE_3D, etc. already defined in CommandTy enum).
Cross-referenced with Linux 7.1 drivers/gpu/drm/virtio/virtgpu_drv.c
virtio_gpu_driver_open() and virtio spec v1.2 §5.7.6.
This is the enabling step for hardware-accelerated 3D rendering
in QEMU via virglrenderer.
Both VESA and Intel GPU drivers legitimately do not support
hardware cursor planes. The handle_cursor method should be
a no-op (software cursor is handled by the console layer),
not a panic.
Replaced unimplemented!() with documented no-ops explaining
that cursor rendering is handled by the software console layer.
This matches Linux 7.1 behavior where framebuffer drivers
defer cursor rendering to the VT/console subsystem.
Replaced hardcoded US scancode→escape-sequence table in fbcond's
text.rs with a configurable Keymap struct supporting TOML-based
keyboard layouts. Five layouts embedded at compile time:
- us.toml — US English (QWERTY), default
- ru.toml — Russian JCUKEN, #1 non-English locale throughout Red Bear OS
- uk.toml — UK English (QWERTY)
- de.toml — German (QWERTZ)
- fr.toml — French (AZERTY)
Implementation:
- src/keymap.rs: Keymap struct with TOML deserialization, scancode→byte
sequence lookup, embedded defaults via include_str!(). 6 unit tests.
- src/text.rs: TextScreen gains field. Hardcoded 12-arm
scancode match replaced with call. Same Ctrl+letter
translation fallback preserved.
- keymaps/*.toml: Five embedded layout files.
- Cargo.toml: added toml.workspace dependency.
- main.rs: registered mod keymap.
Keymap priority policy: English (US) default, Russian #1 non-English,
then UK/DE/FR. Unknown names fall back to US.
fbcond can start before vesad has registered the display, leaving
TextScreen.display.map as None. The old write() silently dropped all
output in that state, so getty/login prompts written during the race
window never appeared.
- Add pending_writes buffer to TextScreen.
- Buffer writes when display.map is None and log a warning.
- Flush buffered writes after a successful display handoff.
- Upgrade handoff success logs from debug to info so they appear in
the default boot log.