opengl-es - Qt Enterprise for IMX6 不使用硬件加速?

标签 opengl-es webgl qt5 hardware-acceleration qtwebengine

我们构建了一个使用 QT WebEngine 来测试 WebGL 功能的应用程序,它可以工作,但是用于渲染一些正弦波形的 CPU 利用率非常高(>30%),根文件系统由 QT Enterprise 提供,如 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 硬件加速的任何其他方法吗?

最佳答案

Qt WebEngine 需要硬件加速来合成页面的层,没有它你可能无法在屏幕上看到任何东西。

Qt WebEngine 背后的 Chromium 是一头野兽,它的设计更多是为了感知平滑而不是产生 CPU 周期;它将使用它可以实现的所有资源。

任何 JavaScript WebGL 调用都会从主渲染线程,然后到 GPU 进程主线程,被解码为对驱动程序的 GL 调用。每个不同的 WebGL Canvas 会触发不同的 FBO 被使用和绑定(bind),需要 GL 上下文切换,并且尽可能频繁地,最新状态会触发 Chromium 合成器启动,将所有委托(delegate)的场景发送到浏览器进程,最终结束于 QtQuick 的场景图线程进行合成。

所有这一切都表明,一个 JavaScript WebGL 调用触发了一台比仅仅告诉 OpenGL 绘制这些几何图形更大的机器。这种设备上 30% 的 CPU 使用率对我来说似乎并不正常,尽管可能有一种方法可以避免瓶颈。

最有效的方法是使用自定义 QtQuick Scene Graph 几何体,如下例所示:http://qt-project.org/doc/qt-5/qtquick-scenegraph-customgeometry-example.html ,但即便如此,我也不希望该设备上的 CPU 使用率低于 10%。

关于opengl-es - Qt Enterprise for IMX6 不使用硬件加速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25885542/

相关文章:

cocoa-touch - 旋转一些 UIView,但不是全部?

android - 纹理小部件渲染 OpenGL 示例

javascript - THREE.js 坡度检测

Qt国际化和CMake : how to update *. ts,不要失去它们

qt - 关闭 Qt creator 5 : "Unexpected CDB error" 后的错误消息

c++ - QPainterPath 和 QPoint 之间的最短距离

opengl - 如何将多个对象分组以将它们作为一个单元旋转?

Android:像iphone一样的页面 curl 效果

javascript - 当您从 DOM 图像加载 WebGL 纹理时,如何判断它是否具有 Alpha channel ?

javascript - WebGL 中 modelMatrix.setTranslate() 和 modelMatrix.translate() 有什么区别?