跳转至

待办与已知问题

本文只记录当前仍需处理或验证的事项。历史调查、个人测试日志、内部提交编号和临时分析文件不在文档中保存。

高优先级

Z 兼容渲染路径

  • 现状:部分 Z 作品依赖专用主绘制设备或特殊合成路径,当前移动端不保证所有主 DrawBuffer 场景正常显示。
  • 解法:梳理主窗口、LayerManager、DrawDevice 和 RenderManager 的目标绑定关系;为每个绘制目标记录生命周期和 context generation;在 GPU 合成前后验证目标纹理、FBO 和更新计数。
  • 验收:启动、连续重绘、转场和返回操作均有有效帧;源纹理不是固定黑色;不同游戏连续打开不会污染绘制目标。

视频画面合成

  • 现状:FFmpeg 解码链路可用,视频帧提交到场景纹理的完整路径仍需收口。
  • 解法:实现统一的帧时钟、丢帧策略、像素格式转换和目标 Layer 更新;明确视频层、普通 Layer 和 Flutter 纹理之间的所有权。
  • 验收:视频首帧、连续播放、暂停、跳转、结束和重复播放均正确;无线程泄漏和纹理泄漏。

预渲染字体与选项框

  • 现状:预渲染字形与运行时字体的基线、绘制区域和裁剪规则仍可能不一致。
  • 解法:分别记录字形原点、基线、绘制矩形和目标 Layer 坐标;将预渲染字体的度量与字形位图绑定,避免使用另一字体的 ascent 推导布局;补充选项框的区域回归。
  • 验收:选项文字在不同字号、全角字符、混排字符和缩放比例下均位于框内;对话文字不回归。

中优先级

Layer 特效 API

  • 现状:部分扩展特效接口只有注册名或兼容桩,缺少完整像素实现。
  • 解法:先定义 alpha、亮度、马赛克和遮罩的输入输出语义,再复用现有 CPU/GPU 像素操作;每个效果提供标量基准和边界用例。
  • 验收:方法存在性、透明度、边缘像素、空 Layer 和重复调用行为稳定。

Motion / Emote 播放器

  • 现状:PSB 基础资源和部分时间轴已支持;复杂网格、粒子、子运动和物理行为仍不完整。
  • 解法:将时间轴评估、父子变换、网格求值和渲染提交拆成独立阶段;所有坐标使用同一矩阵约定,子播放器使用显式时钟;保留静态标量路径作为回归基准。
  • 验收:节点可见性、关键帧插值、旋转枢轴、裁剪和非循环末帧在连续帧中稳定。

字体异常降级

  • 现状:无法取得字形时应跳过当前字形并继续绘制,仍需补充字体对象失效、字体切换和重启场景的生命周期检查。
  • 解法:为字体对象维护有效状态和代数;字体库初始化、字面创建、缓存和释放使用成对生命周期;空字形只作为最后降级,不掩盖字体加载错误。
  • 验收:缺字不阻断脚本;字体切换和引擎重启不访问失效对象;日志可区分缺字与字体对象失效。

低优先级

SIMD 混合公式

  • 现状:部分 PS 混合暂时使用标量实现,以保证与标量结果一致。
  • 解法:以标量函数为规范,使用每像素 u32 lane 重现打包、截断和跨通道算术;加入随机像素、边界值和透明度组合的逐字节对比。
  • 验收:SIMD 与标量逐像素一致后再启用注册;不一致时自动回退标量。

Flutter 帧缓冲与尺寸变化

  • 现状:CPU 回读和纹理路径存在重复分配、复制和异步尺寸请求。
  • 解法:引入尺寸请求版本号,丢弃过期请求;复用描述结构和像素缓冲区;保留 stride、frame serial 和一次重试机制。
  • 验收:旋转、窗口变化、快速切换渲染路径时不出现旧尺寸覆盖、新旧帧混用或资源泄漏。

资源与脚本缓存

  • 现状:资源缓存、脚本缓存和游戏列表持久化仍有可优化的分配与写入频率。
  • 解法:使用容量和命中率指标决定 LRU 参数;对非关键元数据写入做合并调度;保留存档顺序、会话去重和崩溃恢复语义。
  • 验收:缓存命中率改善,峰值内存不升高,崩溃恢复和存档兼容性不变。

验证规则

  1. 修改渲染、字体、缓存或生命周期代码前,先建立对应的标量或旧路径基准。
  2. 优先运行 Linux 核心验证,再运行目标平台构建;涉及纹理、字体、音频或线程时必须进行目标平台回归。
  3. 诊断日志只记录必要的状态和计数,默认关闭高频探针。
  4. 每个已解决事项应从本文移除,保留一句简短状态记录即可。