我想知道是否有可能在没有Xorg及其DDX驱动程序的情况下获得图形硬件加速,仅使用内核模块和其余用户空间驱动程序。我问这个是因为我开始在嵌入式平台上开发(比如beagleboard或更像是一个带有集成GPU的德州仪器ARM芯片),我会得到硬件加速,而不需要图形服务器的开销(不是需要)。
如果是,怎么样?我在考虑OpenGL或OpengGLES实现,或者Qt嵌入式http://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
谢谢。
答案 0 :(得分:6)
答案取决于您的用户应用程序。如果所有内容都是裸机并且您的应用程序团队正在编写所有内容,DirectFB API可以用作Fredrik的建议。如果您使用GTK的帧缓冲版本,这可能会特别有趣。
但是,如果您使用的是Qt,那么这不是最好的方法。 Qt5.0取消了QWS(Qt embedded acceleration)。 Qt正在迁移到 LightHouse ,现在称为QPA。如果您编写的 QPA 插件通过您公开的任何内核机制使用图形加速,那么您就拥有加速 Qt图形。同样感兴趣的可能是Wayland architecture; Wayland 有 QPA 插件。在Qt4.8 +和Qt5.0 +中支持 QPA 。 Skia也是一个有趣的图形API,支持OpenGL后端; Android设备使用Skia。
轻松获得图形加速。你想要合成吗?你的记忆足迹是什么?谁是您的开发人员,他们将编入 API ?您需要对象功能还是只需绘制图元? SKIA , PegUI , WindML 与完整的图形框架(Gtk,Qt)之间存在很大差异,其中包含所有小部件和动态效果人们期待今天。对OpenGL ES API进行编程乍一看似乎很好,但如果您的应用程序有任何复杂性,则需要更丰富的图形框架;主要是重复 Mats Petersson的评论。
修改:从Qt embedded acceleration链接
这是您希望执行的绘图类型。像 Qt 和 Gtk 这样的框架,提供了一个API,可以在屏幕上放置单选按钮,复选框,编辑框等。它还具有文本样式和与键盘,鼠标和/或触摸屏和其他元素的交互。 框架使用绘图引擎将对象放在屏幕上。
图形加速只是将Bresenham algorithm等算法放在单独的CPU或专用硬件中。如果您选择的框架不支持 3D 对象,则框架不太可能需要OpenGL支持,可能不能更好地执行。
拼图的最后一部分是window manager。许多嵌入式设备不需要这样。但是,许多手机正在使用合成和 alpha 值来创建透明窗口,并允许同时看到多个应用程序。这也可能会影响您的图形API。
此外:DRI without X提供了一些令人信服的理由说明为什么这可能不是一件好事;对于单个用户任务,甚至不需要 DRI 。
以下是 Wayland 图形堆栈blog on Wayland的图表。
答案 1 :(得分:0)
这取决于soc gpu驱动程序, 在iMX6上,您可以在framebuffer上使用wayland组合 我构建了一个示例项目作为参考
在omap3上有一个项目