Predidit

Results 576 comments of Predidit

和 flutter 升级之前的 1.8.7 版本的性能比较起来如何

好的,因为新的实现比原来复杂,多线程模型也容易出 bug ,可以的话继续使用这个版本,如果有内存泄漏和闪退及时告诉我 标题栏的问题等我先看一会儿番再看看怎么解决,运气好的话一会儿发个测试版

@XxyokixX 检查这个构建,应该修复了标题栏 https://github.com/Predidit/Kazumi/actions/runs/19612399425/artifacts/4653347270

@XxyokixX 窗口越大,渲染的像素越多,硬件负载肯定是越高的,只要全屏性能相较于 1.8.7 版本没有倒退就是正常的,如果出现倒退,则需要修复。 openGL 相关问题在过时设备上进行测试更好,老设备的图形硬件比较差,单个纹理渲染的时间更长,更容易和并行的其他渲染任务出现资源竞争和状态污染故障。 偶发的弹幕显示问题应该是 flutter 引擎内部的 openGL 状态管理问题,对应 https://github.com/flutter/flutter/pull/178697 。这个修复需要等待 flutter 的下一次版本发布。 > 但此时查看cpu使用情况应该是没有跑满的, 仅发挥了不到50%的占用 原则上每个 openGL 上下文只能被单个 CPU 线程持有,当前播放视频时由主线程持有 flutter 渲染上下文,我们新开一个线程持有 mpv 渲染上下文,然后手动处理两个线程间的纹理同步。性能当然比之前由主线程同时持有 flutter 和 mpv...

@XxyokixX 我会在晚上进行调试,但我可以先做出一些推测。 1.8.8 开始的新的弹幕组件开始进行提前光栅化以减轻绘图压力,也就是第一次绘制弹幕时将文字转换为图片,然后每帧只需要将图片贴上去。而原来的实现只向 GPU 发送文本绘制指令,GPU 内部处理光栅化,每帧均在 GPU 内部进行文字图片转换。 这样的结构减轻了 GPU 内部的渲染管线,让性能受限设备上同时获取流畅的弹幕和超分辨率视频变得可行。因为超分辨率对渲染管线压力巨大,几乎一定会和弹幕文本的光栅化竞争资源。 缺点就是我们的缓存只能放置在内存而不是显存中,新架构每帧绘制我们需要向GPU发送弹幕图片而不是弹幕文本,这会有明显的总线压力,并且会占用更多内存。在CPU性能严重不足的环境中性能可能反而发生退化。 本质上,我们用CPU总线压力和内存压力换了GPU压力,这只是交换而不是完全的优化。 我可以想想办法,但我总觉得这里没有银弹。

@XxyokixX 检查这个构建,修复了一个会影响性能的内存泄漏问题 https://github.com/Predidit/Kazumi/actions/runs/19693590479/artifacts/4682168259

我会想办法在 1.9.2 实现自定义光栅化策略

@XxyokixX 检查 1.9.2 版本,已经发布到 flathub 包括进一步改进的线程模型,以及来自 flutter 的引擎内部GL状态错误修复 现在不应该有任何渲染错误和闪烁,并且一定程度上提升了性能 如果弹幕性能仍然有问题,我会在下个版本考虑自定义光栅化策略

@alexmercerind Alex, I think this might be related to how we're currently using libmpv render. We can currently only use non-zero-copy decoding methods, which likely introduces some performance overhead. I...

@srix55 If you haven't actually encountered situations where the program was terminated due to running out of memory, then there generally isn't a memory leak. If you notice memory usage...