LiquidGlass UI SDK 2.4 — 实际测试记录
本次运行环境:OpenJDK 21.0.11 / Linux x64 / Mesa 25.0.7-2 / llvmpipe LLVM 19.1.7。窗口由 Xvfb + X11 提供;宿主接入测试使用自建 EGL context 和 FBO。没有使用 Windows 实机、真实 JDK 8 VM 或硬件显卡进行验证。
编译和目标
同一份 Java 源码分别按 --release 8 和 --release 21 编译,发布库、展示及示例 class 版本分别为 52 / 65。所有 68 个原控件类保留。新增的全局质量、颜色和三次曲线 API 在两版保持相同签名;不存在虚构的 Java 21 独有性能实现。
11 个完整示例分别直接引用各自发行 JAR 编译成功,包含无 main 的 HostIntegration 接入类。Javadoc 从当前 91 个 API 源文件生成,两个目标共用同一套 API 文档。文档和包内均不分发字体二进制。
原有回归:313 项
| 测试 | 检查数 | 当前记录 |
|---|---|---|
| 控件 / 布局 / 输入逻辑 | 120 | tests/results/2.4/logic.log |
| 状态动效 | 25 | tests/results/2.4/motion.log |
| 中性主题与连续拖动 | 37 | tests/results/2.4/neutral.log |
| 微调器 / 统一间距 | 46 | tests/results/2.4/stepper.log |
| GPU / 宿主接入 | 16 | tests/results/2.4/gpu.log |
| 原材质与字体动画缓存 | 3 | tests/results/2.4/material-gpu.log |
| 高光位置 / 灰阶 / 模糊 | 10 | tests/results/2.4/neutral-gpu.log |
| 真实窗口控件交互 | 32 | tests/results/2.4/window.log |
| 真实窗口完整拖动 | 8 | tests/results/2.4/neutral-window.log |
| 真实窗口横向微调器 | 16 | tests/results/2.4/stepper-window.log |
新功能:66 项
QualityLogicTest 28 项:质量开关、主题拷贝、色值解析/验证、四角顺序、控制柄范围、不可变 corner profile、主题设置、绘制配置、父子状态隔离及变换后的半径。
SdfAtlasTest 8 项:真实有符号距离的内外符号、距离单调性、非二值编码、对称性、空字形/填满字形和抗锯齿种子。生成算法是分离平方欧氏距离变换,不是把 alpha 模糊后改名为 SDF。
QualityGpuTest 17 项:OFF 的硬覆盖,ANALYTIC/HIGH 的有效覆盖率与不同路径;四个独立三次曲线与另写的单调多项式参考比对 9,372 个像素;三次形状不同于圆弧、控制柄影响真实像素、2x 轮廓一致、帧间确定性;真实 SDF 图集和 GL 重建、50 种缩放复用缓存;文本起点/基线对齐避免静态子像素变化、字距参与测宽、显式 DPI 生成新字号纹理;高光色/材质 tint 影响真实 GL 结果,最终 GL_NO_ERROR。
QualityWindowTest 13 项:通过桌面鼠标和键盘操作实际第九页,切换全局 AA 与字体路径、保留输入模型、拖动曲线控制柄、打开颜色编辑窗口、提交 ARGB 更新全局主题、关闭弹窗和窗口。123 帧完成,报告 GL_NO_ERROR。
新增逻辑/SDF/GPU 记录为 tests/results/2.4/quality.log,真实窗口记录为 tests/results/2.4/quality-window.log。
合计 379 项不同检查通过。 这不是穷尽每个控件的全部操作,也不是硬件性能或全部平台兼容性保证。
两个发行物的运行
上面的旧测试主要执行 Java 8 目标 class,在 OpenJDK 21 VM 上运行。为了验证不是只打包了 Java 21 文件名,还单独对 Java 21 发行库执行 16 项宿主 GPU 检查与 17 项新质量 GPU 检查;这些属于重复验证,不重复计入 379 项。
两个目标的实际 demo JAR 各完成第九页 8 帧运行及截图,均使用 OpenGL 3.3 Compatibility,逐帧检查 GL_NO_ERROR。日志为 jdk8-demo.log / jdk21-demo.log / jdk21-gpu.log / jdk21-quality-gpu.log。
native 和打包
Linux .so 与 Windows x64 DLL 均由当前 2.4 C 源码重建。Java / native 协议增加为 24064;发布检查核对 JNI 导出、PE/ELF 格式、资源与 class 版本。
Windows 固定 HDC、context 验证/回退的两个平台源文件与原 2.3 包逐字节比较不变。这只表明保留修复,并不代表本次在 Windows 实际运行。Windows DLL 已交叉编译,不把它记为 Windows 兼容性测试。
发行检查结果在 tests/results/2.4/release-check.json。最终 ZIP 已重新解压后执行离线双目标构建、两种目标的 11 个示例编译及两种 demo 各 4 帧启动;均完成且检查帧返回 GL_NO_ERROR,日志保留在 tests/results/2.4/package-*。
没有做出的承诺
未实现 MSDF 多通道字体;未承诺小字号使用 SDF 永远更清楚。默认 AUTO 保留原生 DPI 小字号 hinting;字体在本机缓存缺失时进行一次 CPU 栅格化/距离变换,不逐帧重建。
HIGH 是 UI SDF 覆盖的四子像素重建,不是整个宿主画面的 4xMSAA/FXAA。四角距离使用有界 GPU 数值最近点求解,不宣称闭式精确解或 Apple 私有连续曲线。旧控件动画和强模糊默认值保留。
实际软件 OpenGL 测试确实执行 GLSL,但不代表使用物理 GPU。JDK 8 运行兼容性以 API 与字节码目标检查覆盖,真实 JDK 8 VM 未验证。