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

NV的LINUX驱动怎么这么残。。。
ATI的驱动表现如何?
intel 的驱动质量最好,2d 完美,3d 也充分的展现了性能;
ati 的驱动比较糟,2d 虽然不错,3d 一直有问题;
nvidia 的驱动介于前两者之间,几乎完美的 3d 性能(所以我才会在 linux 下搞 ogl,因为 linux 本身比 win 快),和糟糕的 2d 表现。
所以总的来讲,不搞图形学,买 intel 显卡不错的。
AlphaBlend是从Windows 98开始出现的,但是因为32bit DIB从NT 5才开始支持,所以Alpha通道一直到Windows 2000才开始得到应用。
我指的不是 32 位绘点这种小事,而是包括字体次像素采样,AA 直曲线,和快速逐像素 alpha 位图绘制,这样比较全面系统的高级 api。
看来ATI的驱动糟糕是一贯的。。。
这些年已经好很多了,真的。
家里台式机是R9550,我倒是没感觉出驱动有多糟。
倒是我笔记本的显卡驱动当掉过数次
ati 之所以被我抛弃的原因是 ogl 的性能和 nvidia 没比,天下又不是只有游戏的。
说的就是像素带Alpha通道的渲染。字体AA也是这个时候。但是AA直线到.net才出现,真是奇怪。
你说的是 cleartype 吗,那也算字体 AA?
能直接绘制 32 位图像,而不用自己用某种方式接近吗?
ClearType不是用于解决AA的。
我指的是TextOut的升级版DrawText,我是在《用VirtuaNES实现汉化》一文中使用的。
另外AlphaBlend函数可以实现像素Alpha,不用模拟,效率也不算太差。当然,.net是本来就支持像素Alpha,只是它的效率……
算了,不讨论这个问题了,估计也不会有什么头脑正常的人去认真的考虑 windows 绘图函数的实用性的。
好像一次xorg还是compiz fusion的升级以后,我的桌面慢到了无法忍受的程度,fx图像破碎不知道如何解决……对nvidia的驱动彻底失望了
所以现在都只有暂时不用Linux了
超级不爽,本来 gvim+eclipse 的搭配超玉枕纱厨爽的,后来发现 gvim 处理的文件一大就慢得出鬼,只得放弃了,以后一定买一台使用“高级“的 intel集成显卡的笔记本……
集成显卡以后才是王道啊。哦,还有GPGPU
GPGPU 我觉得是过度期的东西,以后估计又会回到通用算术器+专用算术器的组合上去吧。
看样子以后nivida是非改行做CPU不可了
难说,搞不好那天卖奶粉取了……
longinus你加我gtalk吧,我的firefox图像破碎,桌面卡得要死,真是很恼火啊。看能不能解决
今天libx11升级以后,情况好了很多。真是奇怪了……
结果其实并没有好……重启几次之后又这样了。而且177.67在我这里会出现菜单阴影变白的情况
你的 gtalk 是啥?
说明显卡型号、制造商、以及发行版版本。
而且,compiz 在很多显卡上都有问题,比如 werner 的 7600GT 就会碰上标题栏重绘不全的问题。
你的 firefox 是内容区破碎还是全部破碎,你是否使用了另外的 fx 主题。你可以尝试一下其他的使用 gecko 的浏览器,看看有没有相同的问题。另外也可以移除 .mozilla 目录试试。
我的Gtalk就是留言用的这个邮箱地址。riverscn at gmail.com
Geforce 8400M GS 64M
我用Archlinux
firefox只是内容区有问题。只要是gecko核心的浏览器都有这个问题。感觉是滚动的时候,一些刷新了一些没有刷新所致。不滚动是不会破碎的
另外就是每次启动的时候都不一定一样,有时情况是好的,有时又是坏的。菜单阴影有时不正常地显示成半透明的白色,有时又完全没有。如果遇到不正常的情况,会卡,而且显卡温度升高很快,正常的话,不但流畅一些,而且显卡温度也比较低……
简直是疯了
昨天不能上网。
你开了 compiz 吗,使用这个 post 里提到的 xorg 修改项了吗,xorg 版本多少?不然你换个稍微低点版本的 nvidia 驱动试试。
比较像 xrender 使用的函数申请的显存被别的程序重用了的感觉。
总之,把 xorg.conf 发到我邮箱里看看。
Pingback: 讨厌的Nvidia Linux驱动 | 折耳根