Nvidia Linux驱动的低效2D表现[图文]

之前,zx 长期的抱怨过 GeForce 6600GT 和 GeForce 8600GTS 糟糕的 Fx 及 Compiz 性能表现,这件事 werner 和 whans 都比较清楚,而且万恶的 whans 同学之前还使用过令 zx 一度眼红的 Intel 板载显卡(什么毛病)。最终发现问题出现在 Nvidia 显卡驱动的 2D 部分。这是怎么一会事呢,让 zx 来告诉你。

Nvidia Linux驱动的低效2D表现[图文]

Linux 下典型的窗口管理器(window manager)有 Gnome 和 KDE,这两者 wm 虽然外观风格差异甚大,各自使用的绘图函数却是建立再共同的基础 X11 上的。2000 年,XFree86 上出现了 xrender 扩展,之后高质量的抗锯齿和颜色混合绘图函数渐渐替代了传统 X11 绘图函数(现在不知道 GDI 的绘图函数水准怎么样了,反正 2k 时代是没有抗锯齿绘图函数的(求证,召唤tc))。而 Nvidia 现在的驱动对这些新的带有 alpha 混合的 xrender api 的支持可以说是很糟糕的,这就导致了在处理如下工作:带有次像素平滑的字体渲染、面积较大的逐像素通道透明位图绘制时,速度非常的慢——而这正好是 Fx 和 Compiz 的典型任务。

这个问题随着 wm 技术的发展而变的越来越明显和不能忍受:譬如 zx 酷爱使用的 Gvim,在使用了稍微复杂一点的语法高亮以后,移动光标这种平淡到让人睡着的操作,都充满了跳跃感;这里就不提 Fx 里 YY 同学的毒熊空间的卷动速度了。

[好吧,不要老抱怨,有点建设性吧]
KDE 4 推出后,N 系显卡惊人的性能问题终于完全表现出来(托 plasma 的福),就连 Intel 都能在评测中数倍领先于这个 GPU 的发明者;独立显卡(2d+3d)奠基者;3dfx 衣钵的接替者(就不用说 ATI 了)。Nvidia 继续忽视下去就太不像样了,终于开始着手处理这个问题,现在已经有了一些比较可行的处理方法。

1、使用新的 Nvidia 驱动(要编译)177.67

2、修改 xorg.conf
Option "PixmapCacheSize" "1000000"
Option "AllowSHMPixmaps" "0"

3、修改启动配置文件
# nvidia-settings -a InitialPixmapPlacement=2 -a GlyphCache=1

第三条 zx 曾今介绍过,对 Fx 和 Compiz 确实有一定的效果,这里的第二条也是非常有道理的。

Nvidia,你还是把 linux 驱动开源吧。就你这驱动的水平,和 5 年前的情况已经不同了——那时你领先,现则变成了落后,还是远远落后。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/cb5ad32ec11cf89b260050cad6f17263.html