Monthly Archives: February 2009

srandom 与 random

今天看了看这两个函数的manpage,srandom 的作用是为random 做个种子,默认random生成的数是以srandom(1)为种子的。所以,虽然random 生成的数好像没什么规律,但每次生成的数都是一样的。如果想要改变这个所谓的“随机数”,就要再说srandom生成一个新的种子,比如srandom(2),不过这样做太麻烦了,先拿srandom(time(0))充个数吧。 #include <stdlib.h> #include <stdio.h> int main() { srandom(time(NULL)); printf(“the number is %ld\n”, random()); }

Posted in Programming | Tagged , | Leave a comment

把baidu 的博客搬到这来了

baidu 实在是太烂了, 所以决定搬到这来,关键也是看了initialtive 的推荐。 不过这里的访问速度实在是不敢恭维…

Posted in Uncategorized | 2 Comments

厘清了xorg里的一些概念

摘自:http://portis21.spaces.live.com/blog/cns!5F0852C73A746A31!532.entry?wa=wsignin1.0&sa=932181685 今天看到一篇不错的英文文章,解释了xorg实现里的一些概念,也解决了我的一些疑惑。概括并解释一下。 期待已久的DRI2被排除出了Xorg 7.4版本了,为什么呢? 是为了给GEM取代TTM让路,而DRI2的实现目前依赖于TTM。 目 前的Xserver渲染架构严重落后于时代,自Xfree时代遗留的问题在Xorg里也未得到足够的重视,所以现在到了革新的时候。2D加速,3D加速等 都依赖于一个好的内存和执行管理器,这也是最难的部分。目前的xorg驱动都实现了各自的存储管理,提供DRI1接口,并负责modesetting。 Memory manger位于内核中,并为用户空间的程序提供一套操作API。由各个不同的显卡硬件抽象出相同的操作,大家共享这部分代码,剩下的与具体硬件相关的部 分由各个显卡分别实现。老的TTM管理器API复杂,而且不适合现代显卡架构,于是Intel提出了GEM来取代之,目前GEM里只包含Intel自己的 硬件相关部分,ATI驱动的一个分支也实现了对GEM的支持。GEM目前已经进入2.6.28版本的内核。 Kernel mode setting:内核也做一部分modesetting的工作,比如系统引导的时候显示的信息,这些都是内核提前做了mode setting,而我们在进入X前,加载xorg驱动模块的时候,xorg驱动再做一次modesetting,重置显示设定,所以会有屏幕闪烁的情况出 现。现在的kernel mode setting就是要把这部分功能移到内核里,完全由内核做mode setting。Fedora 9/10已经实现了这个功能,所以从启动内核到进入X不会有闪烁,一切都很平滑,并且可以做很多eye candy的东西。目前KMS还未进入内核,最早也要等到2.6.29版本了。 DRI2是下一代的Direct Rendering Infrastructure,具有重定向(redirect) direct rendering功能。在当前,一个程序如果使用了OpenGL窗口,显示内容是直接写到framebuffer里的。这会跟使用了composite 功能的窗口管理器WM冲突,这是为什么Google Earth在compiz下支离破碎的原因。而通过DRI2,OpenGL窗口内容先被重定向的offscreen memory里,然后由WM负责输出,就不再会有冲突。而DRI2是基于老的TTM设计的,需要针对GEM作修改。 2D加速方面,EXA 将要取代老的XAA,但EXA也只是xorg server全面转向OpenGL前的一个临时解决方案。XAA不对大量常用2D操作作加速,并且对XRender的加速也支持不够。Intel又提出了 UXA来取代EXA,当前UXA提供和EXA同样的API,但是利用了新的GEM管理器。 Redhat的一个大牛不满X架构的严重老化,另起炉灶设计一个全新的X server,代号Wayland,目前还不实用,拭目以待吧。 针 对GEM修改后的DRI2预计会伴随Xserver 1.6于09年初发布,同时还将释出RandR 1.3。而Xorg … Continue reading

Posted in X.org | Tagged | Leave a comment