mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:4355回复:12

Firefox 未来的显示输出架构 Gecko + Cairo

楼主#
更多 发布于:2005-06-28 17:27
这是心情花园贴在 linuxfans 的一篇翻译文章

http://www.linuxfans.org/nuke/modules.p ... c&t=122497
Cairo 也是开放源码届快速开发中的未来 X 窗口系统 2D 绘图的基石。

英文原文在

http://weblogs.mozillazine.org/roc/arch ... f_the.html

众所周知,Gecko是Firefox(Mozilla)的输出引擎,一般习惯于称之为内核。其性能直接决定了浏览器的效率。伴随着Firefox 1.1推出日期的临近,一项新的东西走入了人们的视野,Cairo. 本文简单介绍一下Gecko和 Cairo,更深入的内容,请参考网上专业教程。:136: 疏漏之处,敬请批评指正。:124:

1、什么是Cairo?

Cairo,过去叫做Xr或Xr/Xc,是一个跨平台的开放源代码的矢量图形函数库,可以提供高质量的显示和打印输出。通过Glitz函数库,Cairo 能使用 OpenGL或X Render扩展的硬件加速功能来绘制图像,这使得基于Cairo的应用能在现代化的3D显示硬件上获得益处。

Cairo提供一个稳定的用户层API,它可以提供现代化的图形处理管理能力,如绘制和填充,映射转换,合成(注意,是合成)与改变alpha半透明图像,高真文本显示等等。能够在不同的媒体上实现相同的输出。

其实更早关于Cairo人们关注的还是Gtk/Gnome的进展,我们可以在 Gnome中国 上看到对Cairo应用前景的展望,可以看到,Cairo应用可以实现的东西是激动人心的。

Cairo拥有多种不同的后端,能够支持多种输出设备。现在所支持的后端包括:

图像:以内存图像缓冲区(in-memory image buffers)为目标。该图像缓冲区可被保存成文件,或者其数据可以被不具有本地后端的图形系统调用。

gl: 通过 glitz库(http://www.freedesktop.org/Software/glitz)使用OpenGL的硬件加速功能来绘制图像。包括GLX 和 AGL (分别为Unix和苹果的标准)。

png: 这个后端使用图像后端来生成png图像文件。

ps: 生成一个PostScript文件,适合高质量打印输出。现在ps后端生成点阵内容,连接图像后端。

xlib: 使用X Window的xlib接口,以Windows 或 Pixmaps 为目标。Render扩展可用,但不必需。

xcb: 和xlib相似,但使用XCB(http://freedesktop.org/Software/xcb)接口。

还有其他一些后端正在开发中:

pdf

svg

quartz——MacOS的后端(http://cairographics.org/QuartzBackend)

win32——Windows GDI 后端(http://cairographics.org/win32)

2、Gecko使用Cairo有什么好处?

可能上面的Gnome展望会令你感到难忘,其实,Cairo在Mozilla上使用的前景同样值得期待。

比如,你的Firefox的CPU占用率是否经常达到100%?实际上很大原因就是因为目前Firefox的Gecko引擎生成页面的方式并不是那么有效率,它的高速度很大程度上依赖于CPU的开销。而通过Cairo可以实现的硬件加速,Gecko就可以把大部分的显示工作交给显卡(GPU)来完成。这样一来,Gecko在那些有3D显卡的机器上是非常高效的。(当然,它不会把你的小猫变成100M专线) :108:

不仅仅是这些,按照 roc 的说法,转移到Cairo上,将会“带给我们现代化的2D图形处理能力(如填充、描旁、去背、映射转换,alpha透明支持等)」。Cairo可以将它的输出传送到不同的后端,这使它很适合在屏幕上显示图像和打印。借助Glitz函数库,Cairo能使用OpenGL的硬件加速功能来绘制图像,这使得 Mozilla能在现代化的3D显卡上获得益处。

为了实现上述目标,Mozilla需要去除软件中大量的图形代码,把它们重新构建于Cairo之上。目前,这一工作正在有条不紊地进行着。在 roc的blog 里面有一篇文章,介绍了Mozilla的图形处理基础架构转换到Cairo的最新进度,其中所附的Mozilla截图便是以Cairo来生成网页以及本身的XUL使用者介面。(尚处于开发测试阶段)
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-06-28 17:27
3、cairo在 Gecko 上实现的路线图:

首先是cairo在 Gecko 1.8/Firefox 1.1中的实现:

canvas 和 SVG的实现将基于cairo

没有硬件加速;只用软件方式实现render-to-bitmap

非cairo的SVG实现方式(例如GDI+)仍会被支持

Windows上cairo的实现将随进度而定

非canvas,非SVG利用现有的平台API实现。

如图,Cairo的运用只是部分的。如Windows平台对于SVG的实现就被排除。

其次是cairo 在 Gecko 1.9 中的实现:

停止使用2D API, 使用cairo来实现所有内容。

解决foreignObject问题

实现HTML显示的硬件加速

更高的质量(比如,双线性图像扫描)

如图所示,Cairo在Gecko 1.9中将得到完全的实现。

现在Mozilla的路线图指向2.0,这是一个非常长远和有规划的项目。或许,伴随着Gecko 1.9或更高版本性能的不断提升,你会在不远的将来看到一个完全不一样的Mozilla. Mozilla基金会运作规范,工作高效。是开源软件组织中难得的典范。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-06-28 17:27
Cairo 实在是好啊,期待 Linux 桌面赶快用上它,一步跨入共产主义。
pho
pho
千年狐狸
千年狐狸
  • UID4300
  • 注册日期2005-03-22
  • 最后登录2016-12-14
  • 发帖数2597
  • 经验40枚
  • 威望0点
  • 贡献值16点
  • 好评度2点
  • 社区居民
  • 忠实会员
3楼#
发布于:2005-06-28 17:27
期待
goodskyzk
小狐狸
小狐狸
  • UID952
  • 注册日期2004-12-16
  • 最后登录2012-11-23
  • 发帖数75
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-06-28 17:27
cairo会不会对GPU要求很高?
orizng
火狐狸
火狐狸
  • UID3619
  • 注册日期2005-03-05
  • 最后登录2006-04-27
  • 发帖数214
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2005-06-28 17:27
如果是这样,那么gecko对KDE/windows如何操作?我不认为gecko内核应该或者会对特定操作系统进行优化。
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-04-22
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
6楼#
发布于:2005-06-28 17:27
现在还是在Gnome下用Firefox感觉比KDE好。其实更偏爱Gnome,对GTK,QT程序的包装都很好。用XFCE4也快就是桌面功能太少了。

Windows下使用,冷启动速度要快些,原因可能是linux下的版本要比Windows下的大,加载时间长。
网页渲染速度在Linux下会快点,
最小化后恢复窗口还是Linux快些,可能是因为Linux在物理内存够用的时候,根本不去使用虚拟内存(swap)
Flash插件支持,在Windows下要好。

整体比较起来,还是觉得Windows版本要好于Linux版本了。
客游
千年狐狸
千年狐狸
  • UID5736
  • 注册日期2005-05-06
  • 最后登录2012-10-09
  • 发帖数1363
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-06-28 17:27
说句实话,我是个不思进取的家伙,满足于现在,感觉很好!
hpmax
火狐狸
火狐狸
  • UID4946
  • 注册日期2005-04-09
  • 最后登录2005-11-03
  • 发帖数131
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2005-06-28 17:27
我就是cpu不够用,把工作转给gpu真是太好了。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
9楼#
发布于:2005-06-28 17:27
我是在赢政看到他的文章的,还有图,我还去看了看视频演示

真好玩,窗口像一页纸一样飘来飘去
http://www.gnome.org/~seth/blog/xshots
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2005-06-28 17:27
goodskyzk:cairo会不会对GPU要求很高?回到原帖


有一定的要求,比如支持 OpenGL 什么的,但现在的硬件完全可以胜任。

[quote="orizng"]如果是这样,那么gecko对KDE/windows如何操作?我不认为gecko内核应该或者会对特定操作系统进行优化。[/quote]

Cairo 是统一渲染架构,其输出可以是 Windows、X 还有 Mac OS 的,跟具体的 KDE/Gnome 等窗口环境无关。当然,要从中受益,QT 和 GTK+ 这样的库也要修改支持 Cairo。GTK+ 是铁定支持的了,已经进 cvs 了,QT 未来版本应该也会支持。

我记得 Cairo 通过 glitz 支持 OpenGL,而 OpenGL 是可以跑在 Windows 上的,更是 X 和 Mac OS 的标准渲染接口。
无聊望见了犹豫
千年狐狸
千年狐狸
  • UID3586
  • 注册日期2005-03-04
  • 最后登录2017-02-12
  • 发帖数1679
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
11楼#
发布于:2005-06-28 17:27
弓虽巾占,看不懂,闪
mfkdmrd9
千年狐狸
千年狐狸
  • UID2783
  • 注册日期2005-02-04
  • 最后登录2019-05-03
  • 发帖数1462
  • 经验-173枚
  • 威望0点
  • 贡献值-370点
  • 好评度-195点
  • 社区居民
12楼#
发布于:2005-06-28 17:27
是啊,一点也看不懂。闪~
晕……
游客

返回顶部