没有X的硬件加速

我想知道是否有可能没有Xorg和DDX驱动程序的graphics硬件加速,只有内核模块和其余的用户空间驱动程序。 我问这是因为我开始在embedded式平台上开发(比如beagleboard或者更为粗略的是德州仪器集成GPU的ARM芯片),而且我会在没有graphics服务器开销的情况下获得硬件加速(这不是需要)。

如果是的话,怎么样? 我在想OpenGL或OpengGLES的实现,或者Qtembeddedhttp://harmattan-dev.nokia.com/docs/library/html/qt4/qt-embeddedlinux-accel.html

而TI提供了大量的文档,但仍然不清楚http://processors.wiki.ti.com/index.php/Sitara_Linux_Software_Developer%E2%80%99s_Guide

谢谢。

答案将取决于您的用户应用程序。 如果所有东西都是裸机,并且您的应用程序团队正在编写所有内容,则可以按照Fredrik的建议使用DirectFB API 。 如果您使用GTK的帧缓冲版本,这可能会特别有趣。

但是,如果你使用Qt,那么这不是最好的方法。 Qt5.0消除了QWS( Qt嵌入式加速 )。 Qt正在迁移到LightHouse ,现在被称为QPA 。 如果你编写一个QPA插件,通过你公开的内核机制来使用你的图形加速,那么你已经加速了 Qt图形。 也有趣的可能是韦兰德建筑 ; WaylandQPA插件。 Qt4.8 +和Qt5.0 +支持QPA。 Skia也是一个有趣的图形API,支持OpenGL后端; Android设备使用Skia。

获得图形加速很容易。 你想合成? 你的记忆足迹是什么? 谁是您的开发人员将编程的API ? 你需要对象的功能还是只画图元? SKIAPegUIWindML和全面的图形框架(Gtk,Qt)与人们期望的所有小部件和动态效果有很大的区别。 编程到OpenGL ES API看起来似乎很好,但如果你的应用程序有任何复杂性,你将需要一个更丰富的图形框架; 主要是重复Mats Petersson的评论。

编辑:从Qt嵌入式加速链接,

  1. CPU blitter – 最慢
  2. 硬件阻击 – 例如directFB。 快速内存移动通常与位操作相反,而不是机器字,如DMA。
  3. 2D矢量 – OpenVG,简单的图形绘制,位操作。
  4. 3D绘图 – OpenGL(ES)有多边形填充等。

这是您想要执行的绘图类型。 像QtGtk这样的框架给了一个API来在屏幕上放置一个单选按钮,复选框,编辑框等。 它还具有文本的样式和与键盘,鼠标和/或触摸屏以及其他元件的交互。 框架使用绘图引擎将对象放在屏幕上。

图形加速只是将Bresenham算法等算法放在单独的CPU或专用硬件中。 如果您选择的框架不支持3D对象,则框架不太可能需要OpenGL支持,并且可能不会更好。

拼图的最后一块是窗口管理器 。 许多嵌入式设备不需要这个。 然而,许多手机正在使用合成alpha值来创建透明的窗口,并允许同时看到多个应用程序。 这也可能会影响您的图形API。

另外: 没有X的DRI给出了一些令人信服的理由,为什么这可能不是一件好事; 对于单用户任务的情况,甚至不需要DRI

以下是Wayland图形堆栈的一个博客 Wayland的图表。

韦兰图

这是依赖于soc的驱动程序的工具,在iMX6上,你可以在framebuffer上使用wayland的组合我建立一个样本项目作为参考

Qt与imx6D / Q的路上

在omap3上有一个项目

omap3 sgx wayland