Skip to content

窗口插帧助手 1.4.2(渲染取帧时序 / 窗口跟随 / 暂停竞争修复)

Choose a tag to compare

@lrylnx lrylnx released this 18 Oct 17:23
· 3 commits to main since this release

修掉几处「看着像卡住、像点了没反应」的状态竞争。没有新功能,插帧算法与引擎二进制都没动。

这次修的是什么

  • 过期帧与最后一帧丢失。 以前渲染线程先取走一帧、再等 GPU 名额:GPU 忙时呈现的是已经过期的画面;更糟的是等待失败会把最后一帧丢掉,之后没人重新唤醒渲染。现在等到真正可写的 drawable 再取最新帧,输入画面活到 GPU 完成。
  • 拖动窗口后画面回跳。 实时跟随走的是便宜的按窗口查询,但 5 秒兜底检查复用了启动时缓存的坐标 —— 拖动或缩放后覆盖层会跳回旧位置。现在兜底也读实时 frame;恢复采集、预热新引擎时重新读取源窗口尺寸与所在显示器。目标窗口关闭会提示并停止。
  • 暂停 / 继续互相覆盖。 重复点「继续」会重启一次采集;「继续→暂停」抢跑时,未完成的异步 startCapture 会在暂停之后把采集又打开。现在暂停请求带递增版本号,后台旧遥测不能覆盖最新操作,快速切换会让旧请求失效。
  • 控制窗被后台引擎拖住。 引擎不读命令时写管道会卡住界面,父进程还留着多余读端、引擎死了也不报 EPIPE。现在命令写入走串行后台队列并关掉多余读端,卡死引擎按时回收。
  • 画质容错。 CAS 编码失败时回退原始画面(不再呈现没写入的中间纹理);GPU 提交失败会提示并停止会话。
  • 锐化强度显示百分比,提示从 20–40% 开始。

验证

  • dev/verify-local.sh:消息分帧、环境隔离、满管道不阻塞主线程、卡死引擎回收、画质档源码级判据(只允许 1:1 下真实生效的档),以及就地抽取真实 CAS shader 执行(零强度 MAE 0.000、非零强度有锐化响应)。
  • 真实 LSFG 动态验证:2× / 3× / 4× / 12×、性能模式、窗口与整屏切换、暂停竞争、暂停中换倍率、失败回退、进程清理。
  • 真实窗口跟随:暂停期间移动缩放后恢复,跨多个 5 秒检查周期 samples=240, staleBounds=0, missing=0。

适用与边界

Apple Silicon / macOS 15+。下载 ZIP 解压后运行「窗口插帧助手.app」,首次需要授予屏幕录制权限。

本版没有做优化前后的延迟 / 功耗 A/B 测量,不宣称任何性能提升;快速运动、遮挡、字幕与切镜头的插帧伪影取决于源内容与引擎,本轮未改。

SHA-256:daf31974a85d7cee5360c505b249c88af81f2b98af5a69cbc92cbf3a29cd58b0