图形与窗口系统
这一层最不寻常的地方不是画得多快,而是界面是“文档”而不是代码:桌面本身就是一个 .fui 声明式文档,由内核里的运行时渲染。
| 层 | 实现 |
|---|---|
| 显示 | VBE 1024×768×32 线性帧缓冲;Bochs VBE 与 virtio-gpu 探测 |
| 文本 | 5×7 位图字体(内核横幅、终端、调试输出共用) |
| 光栅 | 软件光栅:矩形 / 三角形 / 线段,blit 与 scale |
| 着色器 | 一个小的着色器 VM,负责渐变、遮罩一类逐像素效果 |
| 窗口 | wmsg 窗口类表、64 条消息队列、刷新与命中测试 |
| 控件 | fujokit:button / textbox / list |
| 输入 | PS/2 键盘 IRQ1 与鼠标 IRQ12(8042 序列解析、命中测试);XInput 与 IME |
| 音频 | AC97 探测与音量;4 通道混音器加 LPF / 增益链 |
| 游戏 | 游戏模式(前台调度、全屏);Pong / Breakout 自研引擎;输入延迟基准 avg 94 µs |
.fui:把界面变成文档
.fui / .fus 文档由 tools/fuic.py 编译成 .fuc,再由内核里的运行时渲染。桌面——壁纸、图标、面板、窗口——就是这样一份文档。它的好处和 L0 单源一脉相承:界面布局是数据,不是散落在代码里的常量。
.fuc 的节点是 64 字节的定长记录。这个布局此前同时存在于打包器、内核常量与文档三处,是 L0 收拢的第一批目标之一——见 L0 单一真源。
字段参考:
节点字段偏移与 FUI 词汇表见 参考 · FUI 与 .fuc。