Nvidia linux 驱动的低效 2D 表现

之前,zx 长期的抱怨过 GeForce 6600GT 和 GeForce 8600GTS 糟糕的 Fx 及 Compiz 性能表现,这件事 werner 和 whans 都比较清楚,而且万恶的 whans 同学之前还使用过令 zx 一度眼红的 Intel 板载显卡(什么毛病)。

最终发现问题出现再 Nvidia 显卡驱动的 2D 部分。这是怎么一会事呢,让 zx 来告诉你。

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 年前的情况已经不同了——那时你领先,现则变成了落后,还是远远落后。

This entry was posted in 计算机科学. Bookmark the permalink.

26 Responses to Nvidia linux 驱动的低效 2D 表现

  1. YY says:

    NV的LINUX驱动怎么这么残。。。
    ATI的驱动表现如何?

  2. zx.longinus says:

    intel 的驱动质量最好,2d 完美,3d 也充分的展现了性能;
    ati 的驱动比较糟,2d 虽然不错,3d 一直有问题;
    nvidia 的驱动介于前两者之间,几乎完美的 3d 性能(所以我才会在 linux 下搞 ogl,因为 linux 本身比 win 快),和糟糕的 2d 表现。

    所以总的来讲,不搞图形学,买 intel 显卡不错的。

  3. [tc]天驰 says:

    AlphaBlend是从Windows 98开始出现的,但是因为32bit DIB从NT 5才开始支持,所以Alpha通道一直到Windows 2000才开始得到应用。

  4. zx.longinus says:

    我指的不是 32 位绘点这种小事,而是包括字体次像素采样,AA 直曲线,和快速逐像素 alpha 位图绘制,这样比较全面系统的高级 api。

  5. YY says:

    看来ATI的驱动糟糕是一贯的。。。

  6. zx.longinus says:

    这些年已经好很多了,真的。

  7. YY says:

    家里台式机是R9550,我倒是没感觉出驱动有多糟。

  8. YY says:

    倒是我笔记本的显卡驱动当掉过数次

  9. zx.longinus says:

    ati 之所以被我抛弃的原因是 ogl 的性能和 nvidia 没比,天下又不是只有游戏的。

  10. [tc]天驰 says:

    说的就是像素带Alpha通道的渲染。字体AA也是这个时候。但是AA直线到.net才出现,真是奇怪。

  11. zx.longinus says:

    你说的是 cleartype 吗,那也算字体 AA?

    能直接绘制 32 位图像,而不用自己用某种方式接近吗?

  12. [tc]天驰 says:

    ClearType不是用于解决AA的。

    我指的是TextOut的升级版DrawText,我是在《用VirtuaNES实现汉化》一文中使用的。

    另外AlphaBlend函数可以实现像素Alpha,不用模拟,效率也不算太差。当然,.net是本来就支持像素Alpha,只是它的效率……

  13. zx.longinus says:

    算了,不讨论这个问题了,估计也不会有什么头脑正常的人去认真的考虑 windows 绘图函数的实用性的。

  14. 川叶 says:

    好像一次xorg还是compiz fusion的升级以后,我的桌面慢到了无法忍受的程度,fx图像破碎不知道如何解决……对nvidia的驱动彻底失望了
    所以现在都只有暂时不用Linux了

  15. zx.longinus says:

    超级不爽,本来 gvim+eclipse 的搭配超玉枕纱厨爽的,后来发现 gvim 处理的文件一大就慢得出鬼,只得放弃了,以后一定买一台使用“高级“的 intel集成显卡的笔记本……

  16. 川叶 says:

    集成显卡以后才是王道啊。哦,还有GPGPU

  17. zx.longinus says:

    GPGPU 我觉得是过度期的东西,以后估计又会回到通用算术器+专用算术器的组合上去吧。

  18. 川叶 says:

    看样子以后nivida是非改行做CPU不可了

  19. zx.longinus says:

    难说,搞不好那天卖奶粉取了……

  20. 川叶 says:

    longinus你加我gtalk吧,我的firefox图像破碎,桌面卡得要死,真是很恼火啊。看能不能解决

  21. 川叶 says:

    今天libx11升级以后,情况好了很多。真是奇怪了……

  22. 川叶 says:

    结果其实并没有好……重启几次之后又这样了。而且177.67在我这里会出现菜单阴影变白的情况

  23. longinus says:

    你的 gtalk 是啥?

    说明显卡型号、制造商、以及发行版版本。
    而且,compiz 在很多显卡上都有问题,比如 werner 的 7600GT 就会碰上标题栏重绘不全的问题。

    你的 firefox 是内容区破碎还是全部破碎,你是否使用了另外的 fx 主题。你可以尝试一下其他的使用 gecko 的浏览器,看看有没有相同的问题。另外也可以移除 .mozilla 目录试试。

  24. 川叶 says:

    我的Gtalk就是留言用的这个邮箱地址。riverscn at gmail.com
    Geforce 8400M GS 64M
    我用Archlinux
    firefox只是内容区有问题。只要是gecko核心的浏览器都有这个问题。感觉是滚动的时候,一些刷新了一些没有刷新所致。不滚动是不会破碎的
    另外就是每次启动的时候都不一定一样,有时情况是好的,有时又是坏的。菜单阴影有时不正常地显示成半透明的白色,有时又完全没有。如果遇到不正常的情况,会卡,而且显卡温度升高很快,正常的话,不但流畅一些,而且显卡温度也比较低……
    简直是疯了

  25. zx.longinus says:

    昨天不能上网。

    你开了 compiz 吗,使用这个 post 里提到的 xorg 修改项了吗,xorg 版本多少?不然你换个稍微低点版本的 nvidia 驱动试试。

    比较像 xrender 使用的函数申请的显存被别的程序重用了的感觉。

    总之,把 xorg.conf 发到我邮箱里看看。

  26. Pingback: 讨厌的Nvidia Linux驱动 | 折耳根

发表评论

您的电子邮箱不会被公开。 标记为 * 的区域必须填写

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>