主流机顶盒和主流智能电视的一个重要区别是,STB常常没有OpenGL ES支持,而仅提供DirectFB;而OpenGL ES则是SmartTV的标配。
比如,智能电视芯片的主要提供商MStar,其提供的AndroidTV仅仅向用户(电视机厂商)开放OpenGL ES接口,没有DirectFB接口了。
而中高端机顶盒芯片hi3716m,则只有2D硬件,提供DirectFB、TDE和higo图形接口。
这种情况,对于既可运行于主流STB,又能运行于SmartTV的非Android智能操作系统而言,其图形堆栈的选择就有点棘手;当前,非Android的主流开源系统如Mer和Tizen,均基于X11,后面可能会升级到wayland。但X11在主流STB上的2D加速可能是个麻烦事。
在主流STB上可以考虑两种方案:
(1)坚持X11,然后用平台提供的2D能力进行加速。
(2)放弃X11,采用DirectFB+Sawman。
这个问题咨询过Stskeeps和Dominig Arfoll,他们均认为用平台的2D能力来加速X11不是一个好办法,而是建议DirectFB+Sawman。
自己反复琢磨,直觉上觉得如果用DirectFB+Sawman,有点“技术回退”的感觉;而且弃用X11后,很多东西都用不上了,比如X的窗口管理器matchbox。
参考X的设计准则四:“如果問題沒有完全弄懂,可能最好根本就不要去解決它”,因此,决定暂时不放弃X11,也先不着急做X11的2D加速,而是应该静下心来对X11做些研究。
有两篇文章很有参考价值:
http://www.linuxgraphics.cn/xwindow/wayland_intro_1.html
http://www.linuxgraphics.cn/xwindow/wayland_intro_2.html
补充1:
http://en.wikipedia.org/wiki/Nokia_N800
http://en.wikipedia.org/wiki/Nokia_N770
N770/N800使用Maemo系统,而Maemo是用X11的;
但N770的CPU是OMAP1710,没有3D加速。
N800的CPU是OMAP2420,虽有PowerVR MBX,但并没有用上3D加速(includes PowerVR MBX acceleration, but the operating system does not include a device driver)。
需要调研一下N770/N800是如何通过X11使用2D加速的(必要时请教Stskeeps)。