Kazumi icon indicating copy to clipboard operation
Kazumi copied to clipboard

Linux 超分辨率 GPU 负载比 Windows 多

Open xft233 opened this issue 11 months ago • 9 comments

环境: 操作系统: Debian Linux 6.12.12 处理器: 12 × AMD Ryzen 5 6600H with Radeon Graphics 图形处理器: AMD Radeon 660M / GeForce RTX 3050 Laptop

核显,在使用超分辨率“效率档”时,遇到以下问题:

Windows 平台:GPU 负载约为 60%。 Linux 平台:GPU 负载 100%,画面出现轻微卡顿。鼠标也卡顿

提交前确认

  • [x] issue 列表中,没有我的新功能需求 / 问题

xft233 avatar Feb 18 '25 15:02 xft233

弹幕开了吗

试试在播放设置的硬件解码器选项选择 vaapi-copy

Predidit avatar Feb 18 '25 15:02 Predidit

弹幕没有开 选择 vaapi-copy 后,情况好点。 但GPU负载还是100%,鼠标还是有点卡

xft233 avatar Feb 18 '25 16:02 xft233

实在卡就用独显吧,性能瓶颈可能在mpv运行超分辨率相关着色器的流程上。

这个问题非常非常底层,估计只有 mpv 的开发人员知道怎么做。

Predidit avatar Feb 18 '25 16:02 Predidit

双显卡(核显,独显)情况下,能用独显吗 用nvdec 好像没反应

xft233 avatar Feb 18 '25 16:02 xft233

Linux 的双显卡切换非常麻烦,而且不同DE也有差异。

目标应该是让 Kazumi 运行在独立显卡上。

你可以试试运行 Kazumi 时附加一些环境变量,但兼容性最好的方法应该还是系统全局使用独立显卡。

Predidit avatar Feb 18 '25 16:02 Predidit

使用 primusrun 尝试运行在独显上,但是没效果 不用 Linux 了,用 Windows 看动漫

xft233 avatar Feb 18 '25 16:02 xft233

我们可以保持这个问题为打开

这应该是一个实际存在的问题

Predidit avatar Feb 18 '25 16:02 Predidit

在 X11 环境下使用变量或者 primusrun 命令,让 Kazumi 运行在独显。

__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia

在 Wayland 环境,更新最新驱动,确认 modeset 为 Y

cat /sys/module/nvidia_drm/parameters/modeset

xft233 avatar Feb 19 '25 00:02 xft233

wayland 下,DRI_PRIME=1 和 kde菜单设置独显启动确认有效卸载到独显,我的可怜核显实在干不动超分

yigekuyou avatar Oct 28 '25 12:10 yigekuyou

@xft233

尝试 1.9.1 版本,解码器选择 vaapi

Predidit avatar Dec 02 '25 04:12 Predidit

好像没有明显的变化 我觉得不是 kazumi 的问题 使用 mpv 播放同一个视频,再加上 Anime4K。同样的参数Linux 超分辨率 GPU 负载比 Windows 多

Image Image

xft233 avatar Dec 02 '25 10:12 xft233

anime4K 的着色器在windows上会通过 shaderc 转换为 SPIRV 并在 D3D11 上下文中编译为 HLSL

我现在倾向于 HLSL 的运行效率比 GLSL 高,而这是我们甚至 MPV 都无法解决的

目前 Linux 平台 Kazumi 播放器在性能上已经几乎没有优化空间,剩下的可以进行的工作也是增强稳定性和兼容性,例如实现双重缓冲

Predidit avatar Dec 02 '25 11:12 Predidit

好像发现个新问题 让 kazumi 跑在独显并使用超分辨率,画面会不断闪烁。 猜谜时间()

xft233 avatar Dec 02 '25 13:12 xft233

@xft233

这不用猜谜,如果在一帧的预算中,mpv 没有完成渲染(使用超分滤镜会明显拉长渲染时间),那么那一帧视频帧就会变成黑帧。

在拥有双重缓冲的情况下,未渲染完成时会填充上一帧而不是黑帧。

我会尽量在下个版本实现双重缓冲。

我唯一感到好奇的是,这个问题真的能在独显上被观察到吗,这一般发生在核显上,因为只有核显无法在使用超分滤镜时维持视频的24帧输出。

如果你在使用性能稍差的核显,你可以在效率档观察到闪烁吗。

Predidit avatar Dec 02 '25 13:12 Predidit

使用独显 之前说错了,不开超分辨率也闪烁。 开了超分辨率就直接黑屏了

核显的话观察不到闪烁

https://github.com/user-attachments/assets/a1cfdef8-46b2-4b1a-9d6f-c0b7334ba0eb

xft233 avatar Dec 02 '25 13:12 xft233

真离谱,明明 nv 的 OpenGL 驱动质量更好。在我实现双重缓冲后会在这里发布一个测试版。

Predidit avatar Dec 02 '25 13:12 Predidit

@xft233

检查这个构建

https://github.com/Predidit/Kazumi/actions/runs/19884502258/artifacts/4747213743

Predidit avatar Dec 03 '25 06:12 Predidit

如果鼠标静止不动,不闪烁。 鼠标移动或者点击什么东西,有概率闪烁 我尝试更新下驱动试试

xft233 avatar Dec 03 '25 06:12 xft233

视频部分闪烁还是整个应用闪烁,还是 UI 部分闪烁。

闪烁在禁用超分时也会发生吗。

Predidit avatar Dec 03 '25 06:12 Predidit

不开超分也闪烁。 应该是视频部分闪烁? 更新了最新驱动,一样闪烁

https://github.com/user-attachments/assets/63ac0070-9367-4589-b1eb-42cb53fed213

xft233 avatar Dec 03 '25 06:12 xft233

双缓冲的实现有 bug ,不知道为什么在 AMD 设备上测不出来,AMD驱动内部实现把 bug 吞掉了

稍后我会发布另一个构建

Predidit avatar Dec 03 '25 07:12 Predidit

@xft233

检查这个实现

https://github.com/Predidit/Kazumi/actions/runs/19887042710/artifacts/4748052305

Predidit avatar Dec 03 '25 08:12 Predidit

貌似还是会闪烁 另外使用独显,超分辨的质量档位时 颜色变的有点怪了

Image

xft233 avatar Dec 03 '25 10:12 xft233

有改善吗

现在不使用超分或者使用效率档时还会闪吗

还是闪烁频率和之前完全相同甚至恶化了

我要去翻翻 NV 的文档,我总觉得 EGL 有些 API 在 NV 上实现的不太一样

Predidit avatar Dec 03 '25 11:12 Predidit

感觉是改善了,闪烁只有在点击鼠标才会出现

xft233 avatar Dec 03 '25 11:12 xft233

没有超分的情况下使用鼠标也会闪吗

Predidit avatar Dec 03 '25 11:12 Predidit

没有超分也会闪 按空格暂停,再播放也会闪一下

xft233 avatar Dec 03 '25 11:12 xft233

闪烁问题现在受有无超分影响吗,超分会导致闪烁频率变高吗

还是无论超分设置如何,总是在鼠标点击时出现

Predidit avatar Dec 03 '25 11:12 Predidit

闪烁问题不受有无超分影响。 超分不会闪烁频率变高,应该

复现:点视频下方工具栏。比如弹幕设置,或者倍速,或者超分辨选项。极大概率会闪一下

xft233 avatar Dec 03 '25 11:12 xft233

你能录一小段现在的视频吗,就像之前那样

Predidit avatar Dec 03 '25 11:12 Predidit