我们构建了一个使用QT WebEngine来测试WebGL功能的应用程序,但是它的CPU利用率非常高(>30%),用于渲染一些正弦波形,根文件系统是由QT WebEngine提供的,如此处针对IMX6所述
http://doc.qt.digia.com/QtEnterpriseEmbedded/qtee-preparing-hardware-imx6sabresd.html
在检查根文件系统时,我们发现没有GPU驱动程序(通常是IMX6的libVivante.so和libVivante.ko ),所以看起来所有的GL渲染都是由CPU而不是GPU完成的,这就是CPU利用率高的原因,有谁知道在QT WebEngine中为WebGL启用硬件加速的其他方法吗?
发布于 2014-09-29 22:26:55
Qt WebEngine需要硬件加速来合成页面的各层,如果没有它,您可能无法在屏幕上看到任何内容。
在Qt WebEngine之后,Chromium是一只相当不错的野兽,它更多地是为了感知流畅性而不是为了产生CPU周期而设计的;它将使用所有可能的资源来实现这一点。
任何GPU调用都将从主渲染线程转到GPU进程主线程,以解码为对驱动程序的GL调用。每个不同的WebGL画布将触发一个不同的FBO被使用和绑定,需要GL上下文切换,并且尽可能频繁地触发Chromium合成器启动,将所有委托的场景发送到浏览器进程,最终在QtQuick的场景图线程中结束以进行合成。
所有这些都表明,单个JavaScript WebGL调用触发了一台更大的机器,而不仅仅是告诉OpenGL绘制这些几何图形。在这种设备上,CPU使用率达到30%对我来说并不是异常的,尽管可能有一种方法可以避免瓶颈。
最有效的方法是创建一个自定义的QtQuick场景图几何图形,如本例所示:http://qt-project.org/doc/qt-5/qtquick-scenegraph-customgeometry-example.html,但即使这样,我也不希望该设备上的QtQuick使用率低于10%。
https://stackoverflow.com/questions/25885542
复制相似问题