kuanat

kuanat

V2EX 第 634702 号会员,加入于 2023-06-19 11:38:40 +08:00
kuanat 最近回复了
14 小时 28 分钟前
回复了 KinsleyNg 创建的主题 Linux 这个 Linux 的 chrome 硬解就这么难处理吗
@KinsleyNg #7

实测 xwayland 有效,wayland 无效。楼上说 24.1 相关补丁才合并,目前 f40/rawhide 都只有 24.0.6 的包。

即便补丁合并了,我还是不建议以 chrome 为主力的时候选择 fedora 。由于版权的缘故,RH 系只能把解码器托管在 rpmfusion ,然后 chromium build 和原版经常不一致。反正 gtk4 在我印象里是没有生效过的。

然后 chromium 只实现了 text-input-v1 协议,这个协议除了 KDE/KWin 根本没人支持,就连 KWin 的支持还是 fcitx5 作者加回去的。所以在 Fedora 上既要 wayland 又想输入法正常,只能是 KDE 版本。而其他发行版可以 gnome/gtk4 曲线救国。

另外我只是用 fedora 但是不用 gnome ,日常主力是 sway ,sway 不支持 text-input-v1 。hyprland 那边是支持的,fedora/hyprland 这个组合可以考虑。

至于 firefox 虽然我常年支持,但是在性能方面弱不少,硬件解码支持大家都一样,但其他方面差距很大。我在另一个帖子里刚好提到了,B 站现在那个弹幕功能,firefox 的硬件加速比较原始,纯 3D overlay 。Chrome 就好很多,把 css3 用 video enhance 单元来加速。
19 小时 48 分钟前
回复了 abcbuzhiming 创建的主题 程序员 现代 web 随便一个页面都会用到 GPU 加速功能?
@mayli #25

现代操作系统的显示逻辑是 C/S 架构的,应用程序也就是客户端会申请一块显示区域作为 client area 用于显示(相对应的 host area 一般是标题栏、边框这些)。

没有硬件加速的情况下,客户端区域就是各种界面库 API 或者文字 API 绘制,直接把绘制结果以像素的形式填充到客户端区域。操作系统的窗口合成器( compositor )把桌面上所有应用的显示区域做叠加合成,交给显卡完成最终显示。

有硬件加速的情况下,比如窗口中部分区域播放视频,客户端依旧会声明一块显示区域,但中间挖出一部分,并表示这部分不由客户端负责。窗口合成器也会忽略这一部分(但是还会判断遮挡关系),此时显卡的 framebuffer 就是两部分,一部分是窗口合成器给的去掉视频区域的显示数据,另一部分是视频解码单元给的视频数据。

上个回复里说 3D 其实不准确,因为所有最终的渲染都是走的 3D 单元。在显卡看来,3D 单元就是渲染单元。这个语境下的 2D 一般是指无加速,就是客户端把结果绘制完了,合成器直接拿像素数据,而 3D 有加速就是绘制 API 直接在显示区域上进行操作。这里细节我不是很确定,但大致思路就是浏览器把所有绘制 API 后端都用 3D 指令来实现了,整个浏览器内部就是一个巨大的 3D 显示,skia 文字渲染引擎也是 3D 指令在页面上显示文字。

我上个回复里描述的 3D 渲染行为,是根据风扇狂转推测的浏览器的行为。因为我是 Linux 用户,所以对硬件加速感知很深。每个浏览器都有自己如何用显卡硬件单元完成加速的实现逻辑,最终效率和性能也差别很大。目前 bili 的弹幕功能是基于 css3 的,之前有过基于 canvas 的版本但可能是因为效率问题弃用了。

目前 Firefox/Chrome/Chromium 三个浏览器的表现都是不一样的:

- Firefox 就是我上个帖子里说的模式,会调用视频解码单元,但对于 css3 的加速就很弱。从显卡资源占用上说,比较大可能就是没有优化,直接在透明层上叠加。

- Chrome 官方打包版本对于硬件加速支持很不稳定,有些版本正常有些版本就没了。

- Chromium 主要看发行版适配,官方源会打针对自己发行版的补丁。在解码器和补丁都正常的情况下,效果是最好的。首先视频本身还会走硬件解码,但是 css3 特效并非 3D 透明层,而是调用 video enhance 硬件单元。这个硬件单元的作用原本是用作视频播放去噪点、锐化等功能的,Chromium 的实现里 css3 相当于实时调整原视频,所以大幅降低了 3D 渲染单元的负载。
20 小时 17 分钟前
回复了 KinsleyNg 创建的主题 Linux 这个 Linux 的 chrome 硬解就这么难处理吗
@KinsleyNg #5

我刚刚又确认了一下,Google 官方打包的那个版本,确实是没有视频解码硬件加速的。原因不清楚,我是拿 bili 的 av1 做的测试。

我用的 Fedora 官方源的 chromium 测试,是有视频解码硬件加速的。
@sakujo #13

不开弹幕的话,就是单纯的扣一块区域,调用硬件解码器。浏览器本身是不负责播放区域的,系统窗口合成器把浏览器渲染的其他部分与视频解码的播放部分进行叠加。这个过程里,显卡的 Render/3D 单元的占用取决于视频是否在播放。暂停的话占用率会立即下降。

如果开启弹幕,弹幕区域等价于在跑一个 3D 应用,这个应用就是在播放区域之上渲染一个透明层,然后把弹幕显示上去,一般这个 3D 应用的帧率会和屏幕刷新率一致。即使视频暂停,这个透明层依旧不会停止运行。(视频暂停会看到旧弹幕飘过,只是不加载新弹幕了。)

CPU 要负责生成弹幕的帧,同时一些类似于避开视频中的人物会加大计算量,因为这个功能实际上要抓取画面,然后计算分析生成绕开人物的蒙版。

风扇转是因为 cpu gpu 都在高负荷工作。手机这个功耗水平都能完成的事情,只要硬件解码正常工作,没有理由电脑还很吃力。
2 天前
回复了 kuanat 创建的主题 V2EX V2EX 是否会考虑增加专栏功能?
@shendaowu #4

试了一下确实稍微有点麻烦,我思考了一下,可能站长说的 IPFS 分发的方案也可行。或者等主题多了做个汇总主题。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2326 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 03:26 · PVG 11:26 · LAX 20:26 · JFK 23:26
Developed with CodeLauncher
♥ Do have faith in what you're doing.