没有X的硬件加速

deb*_*evv 4 linux embedded arm opengl-es xorg

我想知道是否有可能在没有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

谢谢.

art*_*ise 6

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

但是,如果您使用的是Qt,那么这不是最好的前进方式.Qt5.0取消了QWS(Qt嵌入式加速).Qt正在迁移到LightHouse,现在称为QPA.如果您编写的QPA插件通过您公开的任何内核机制使用图形加速,那么您已经 加速了 Qt图形.同样感兴趣的可能是Wayland建筑 ; 还有适用于Wayland的QPA插件.支持存在QPA在Qt4.8 +和Qt5.0 +. Skia也是一个有趣的图形API,支持OpenGL后端; Android设备使用Skia.

获得图形加速很容易.你想要合成吗?你的记忆足迹是什么?谁是您的API开发人员?您需要对象功能还是只需绘制图元?SKIA,PegUI,WindML和完整的图形框架(Gtk,Qt)之间存在很大差异,具有人们期望的所有小部件和动态效果.初看起来,OpenGL ES API的编程似乎很好,但如果您的应用程序有任何复杂性,您将需要更丰富的图形框架; 主要是重复Mats Petersson的评论.

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

  1. CPU阻击 - 最慢
  2. 硬件阻击器 - 例如,directFB.快速内存移动通常使用位操作而不是机器字,如DMA.
  3. 2D矢量 - OpenVG,棒图绘制,带位操作.
  4. 3D绘图 - OpenGL(ES)有多边形填充等.

这是您希望执行的绘图类型.像QtGtk这样的框架,提供了一个API,可以在屏幕上放置单选按钮,复选框,编辑框等.它还具有文本样式和与键盘,鼠标和/或触摸屏和其他元素的交互.一个框架使用绘图引擎把物体在屏幕上.

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

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

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

以下是Wayland图形堆栈上Wayland博客的图表.

Wayland图