LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 849|回复: 5

关于各级图形显示模式和Opengl的问题

[复制链接]
发表于 2009-5-13 16:22:01 | 显示全部楼层 |阅读模式
framebuffer 下面能不能使用硬件加速的opengl。
现在linux下gl都是在X下工作的吗?
所谓glx?开源显卡驱动是不是都上在XORG上的?

可不可以在非X下用硬件opengl?
下面是我的一些感觉。球认同或者指正。

使用vesa驱动的Xorg就是在framebuffer下运行的Xorg。
Xorg有DRI等,也是硬件加速。就代表我们可以用更直接的方式实现opengl。跳过X11的C/S协议。

那样的话应该工作在什么模式下呢? 是framebuffer吗?还是其他的一些显卡非文本模式?
发表于 2009-5-13 17:11:06 | 显示全部楼层
framebuffer 应该是个与 Xorg 平行的东西吧?印象里 framebuffer 的效率是很低的,不如 Xorg 。

什么说 Xorg 是运行在 framebuffer 上的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-15 10:25:12 | 显示全部楼层
看了些文章,有些头绪了。
framebuffer device是在内核里面作为显卡驱动模型。显卡和显存在内和里面被驱动成framebuffer设备,然后Xorg上有这些设备的支持,并操作他们绘制X。并集成为GLX等。

那么openGL SDL等就可以在framebuffer上跑了咯。要做的和Xorg一样,操作framebuffer。
是这样吗?
回复 支持 反对

使用道具 举报

发表于 2009-5-15 15:30:30 | 显示全部楼层
Post by ttand;1987406
看了些文章,有些头绪了。
framebuffer device是在内核里面作为显卡驱动模型。显卡和显存在内和里面被驱动成framebuffer设备,然后Xorg上有这些设备的支持,并操作他们绘制X。并集成为GLX等。

那么openGL SDL等就可以在framebuffer上跑了咯。要做的和Xorg一样,操作framebuffer。
是这样吗?

我是这样理解的, fbdev 也就是我们讨论的 Linux framebuffer ,不是硬件上的 framebuffer ,只是个抽象出来了设备,就是 /dev/fb0 。 X  有相应的驱动 xorg-x11-drv-fbdev 来驱动 fbdev ,但是也可以通过 xorg-x11-drv-intel 来驱动真正的显卡,比如说 /dev/video0 。不知道说的对不对。大牛们到哪里去了?
回复 支持 反对

使用道具 举报

发表于 2009-5-15 18:06:43 | 显示全部楼层
frame buffer 设备只提供了非常有限的用户接口, 比如将一段显存映射到用户空间, 比如获取/设置调色板...

用 frame buffer 设备接口写过程序的人就会知道, 唯一能操作的单位就是点, 比如绘制一个矩形区域并填充为红色, 就是手工计算这个范围对应的所有的点的地址, 再将这些点全都设置为红点. 这样的绘制过程完全是由软件指令来实现的.

显示的硬件加速用直白的话来描述就是提供更多高级别的可操作单位. 比如很多显示加速器都会提供 fillrect, blit 之类的操作, 它们是以矩形为单位进行处理, 从上层应用的角度来看, 大体上只要发送一个指定格式的请求就可以完成这样一个矩形级别的单位的处理. 显示加速设备通过硬件来实现这种批量化的操作其效率自然可以比软件实现高几个数量级.

矩形只是一个简单而常用的例子, 像多边形之类也是非常常见的硬件显示单位.

除了扩大显示操作的单位, 为这些单位提供更复杂的操作也是显示加速的一种方法. 以矩形的搬移为例, 有可能硬件直接提供了透明色, alpha 混合, 甚至剪切域等支持, 这些复杂操作通过软件实现会非常慢.

回到楼主的话题, 在 frame buffer 设备的概念下是没有办法使用 opengl 之类的加速接口的, 同样也不能使用 X 的显示加速驱动. 但是假如楼主的目的只是想绕过 X 来使用显示加速功能, 那倒并非不可能, 比如 SDL, DirectFB, MiniGUI 等都对一些显示设备提供了加速接口的支持. 不过这些与基本的 frame buffer 设备是有着本质的不同的.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-18 10:25:55 | 显示全部楼层
显卡驱动包括两块,一块是内核下的控制显卡指令和显卡framebuffer.
还有就是xorg上的DRI硬件加速驱动.
中间通过DDX,控制显示,LIBDRM传递显示数据和硬件绘图指令,
是否操作DDX libdrm 还有gl库就可以在非X下gl了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表