Beryl / Compiz / XGL / AIGLX: 新进展

鉴于Xgl的编译困难——没有能够和Mesa共同编译的发布版本,我全面转向AIGLX。新版本的Xorg(7.2)自带了AIGLX,并且默认状态就是激活的。我原先用git抓下来编译的Xorg,竟然是7.1.99.2,竟然比发布版旧…… 跑起来之后,Xorg会在某个不确定的时刻死掉…… 而且,这个版本就是死活不肯编译 GLX Extension! 就算我 configure 的时候指定 –enable-glx 也没有用。 后来想,既然决定用新的Xorg,干脆用ModularXorg的ports算了。原先是觉得这样弄会很烦,但是也没有别的更简单的办法。于是就照着FreeBSD wiki里的ModularXorg的方法,先备份ports目录,然后用git抓下新的(大概耗时半小时左右),接着就到ports里的各处安装ModularXorg的各个组成部分,比如xorg-proto,xorg-server,libGL*,libglut,dri,libdrm,xf86-input-mouse,xf86-input-keyboard,xf86-video-ati,还有各个小工具,比如xdpyinfo,iceauth,…一切OK后,重新配了一下X,顺利进去了。这个X相对git下来那个稳定多了,也有了GLX Extension和Direct Rendering(虽然现在的ports里面的dri不编译glxinfo,glxgears等等,但是可以用git抓下新的Mesa的源代码,然后去progs/xdemos里面编译)。但是这个X没有6.9稳定,比如我切换到命令行再切换回来很容易出问题,而且每次退出基本上都不能正常,总是有”X in free():…”的错误。但无论如何,可以用了。然后安装了beryl和compiz,原来想着差不多了,但是启动beryl之后…… 就出来那个”white screen of death”了。其实也不是全白,可以转动桌面立方体,弹性窗口效果等等都有,桌面还是蓝颜色的,就是所有的窗口都是白的(还有半透明效果……),没有内容。如果用–use-copy选项启动beryl,能显示内容,但稍有变化就会乱掉,而且速度奇慢(其实不用–use-copy也很慢,但是至少能动),总之就是行不通。compiz这边,启动的时候显示”no GLXFBConfig for default depth, this isn’t work”的错误,而beryl对应的是”no GLXFBConfig for default depth, falling back to visinfo”,看来beryl针对这个问题进行了patch。总之就是不能正常使用……据说这个是glproto从1.4.7升到1.4.8之后导致的一个问题,看来要等更新了……现在打算去看看beryl的代码,哪里出的问题……注:beryl是从compiz分离出来的项目,基于compiz的代码,进行了许多改进/创造,目前两个项目正在考虑整合问题。 Old Blog Link: http://computer.mblogger.cn/henryhu/posts/63590.aspx

尚未完成: Compiz / Beryl / XGL / AIGLX on FreeBSD

和 Beryl / Xgl / AIGLX 等东西折腾了三天了,还没搞定……其实说起来很简单:装好各种基础,再装Mesa,然后是Xgl,接着compiz,就可以了。但是Xgl的源代码的编译严重依赖于Mesa的源代码,每次 Mesa有文件上的变化Xgl也要变。但是…… 计划没有变化快…… 最新通过git抓下来的Xgl和Mesa的源代码不能一起编译…… 我常试了各个版本,尚未找到办法……在网上看见很多安装指南,看来成功编译的不是正好Mesa和Xgl可以共同编译,就是自己做了些小的修正,但是现在的版本差别实在太大…… 后来发现新的用git抓下来的Xorg可以和Mesa一起编译,貌似采用了一种更先进的依赖方法…… 于是我试着把它和现在的Xgl整合,但是…… 没有效果……最后,我终于知道新的Xorg带了一个叫AIGLX的东西,按照www.freedesktop.org上的说法,这个是“Xgl的一个流行的替代品“。目前编译Xorg中……Compiz倒是很容易编译,就是一直跑不起来,看来一定要跑在Xgl/AIGLX上面……另一个搞不清楚的是,我编译安装了最新的Mesa(6.5.3 by git),卸掉了ports里的dri和libdrm,也编译安装了新的libdrm,但为什么就是没有direct rendering… 附: 各个版本的Mesa和Xgl的各个不同点 Mesa: 6.5 6.5.1 6.5.2 git cvs Xgl: git cvs 6.5.3 6.5.2 main:bitset.h No Yes Yes Yes Yes Yes Yesarrayobj.h No Yes Yes Yes Yes Yes Nomipmap.h No No Yes Yes Yes Yes Nomesa:array_cache Yes Yes Yes …

Continue reading ‘尚未完成: Compiz / Beryl / XGL / AIGLX on FreeBSD’ »