每一个想法,都从一句你好开始
你好,这里是 6day。
很高兴,在这里遇见你。
一个开发者的鸿蒙探索,
和一些关于创造的记录。
开发手记 FIELD NOTES
把日常,写成手记。
那些从“不知道”到“跑通了”的片刻,
值得留下来。
窗口与生命周期/OpenHarmony 窗口还没出现,世界已经开始渲染。 把 X11 的生命,和屏幕上的窗口分开。
有些窗口不应该急着出现。应用在后台时,X11 客户端仍然可以创建窗口、绘制内容、读回像素;这些事情,不需要等待一个鸿蒙原生窗口。
于是有了 lateWindow:先让画面在自己的世界里生长,再由前台生命周期事件决定何时投射到屏幕。没有定时轮询,也不靠失败后的反复尝试。回到前台时,把已经准备好的画面接上就好。
窗口是呈现的入口,不应该成为渲染开始的条件。
图形与性能/Vulkan 让一个像素,少走一点弯路。 从接口文档走到实机,重新认识零拷贝。
SDK 支持的版本,不一定就是设备 GPU 的能力。实机检查后,渲染器仍然以 Vulkan 1.2 为基线;比起追逐版本号,更想让每一条路径都能被验证。
这次跑通了原生 GLES 经 OH_NativeBuffer 导入 Vulkan 的图像共享路径,并用像素与同步栅栏检查结果。省去 CPU 搬运是一小步,弄清楚各个图形后端的边界,是同样重要的一步。
持续记录 CPU、RSS、文件描述符和 GPU 分配。一次正确,不等于长久稳定。
输入与兼容性/X11 从一个按钮,到一千次点击。 画面亮起来以后,还有很多日常需要认真对待。
终端里敲下一行字,计算器按出一个结果,窗口移动后稳稳留在原地——看似普通的事情,拼在一起才是一台能用的桌面。
原生输入接收器记录到了完整的 1,000 次按下和释放。有序的输入队列保住了边沿事件,但这不代表所有客户端都已经过关:更密集的 CEF 点击、细小的菜单、完整的 Steam,仍然各有需要追踪的问题。
把通过的写清楚,也把尚未通过的留下来。兼容性,是一件需要耐心的事。
新的开始/Rust · ArkTS 先说你好,再慢慢认识鸿蒙。 为一个新的平台,重新想一遍窗口、渲染与连接。
从一个独立的 yserver-ohos crate 和 ArkTS 工程开始,让 Rust 处理服务与渲染,让鸿蒙原生界面接住窗口和输入。通过 TCP,另一端的 X11 应用开始在这里显示。
新平台有自己的生命周期、图形能力和窗口规则。与其带着旧平台的假设一路修补,不如从真实的约束出发,把结构重新理顺。一点点实现,一次次上机,再把发现写下来。
今天先让第一扇窗口亮起来,明天再让它更好一点。
故事还在继续,下一篇正在路上。
A SMALL CORNER OF THE INTERNET
这里是 6day。
一小块记录开发的地方。关心代码如何工作,也关心它最后如何被人使用。
不急着抵达哪里,保持好奇,把想做的事情慢慢做出来。