配置
前言
QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts),如果開啟,parallel虛擬機會花屏,如果關閉,parallel不花屏,但是cpu占用變高。這是因為虛擬機的opengl驅動實現有問題。
QtWebEngine::initialize()是只針對qml的webengine模塊。
This has the same effect as setting the Qt::AA_ShareOpenGLContexts attribute with QCoreApplication::setAttribute before constructing QGuiApplication.
由這段我們知道,這個和設置那個是一樣的setAttribute(Qt::AA_ShareOpenGLContexts),只是次序不同而已(一個至app前,一個至app后qml前。
首先設置AA_ShareOpenGLContexts這個以后,對瀏覽器的參數列表才能生效,也就是AA_ShareOpenGLContexts這個是總開關,然后再細分設置參數。
1 關於渲染
如果一個含有QWebengine的程序認為是兩個程序,qt程序默認是使用AA_UseDesktopOpenGL的,經測試,如果主動設置為AA_UseSoftwareOpenGL,在視頻頁面,本來gpu僅需要10%左右,那么cpu模擬則會多出20~50%的cpu,而且還是但視頻頁面的。所以,qt主程序一般情況下不要使用這個。需要軟件渲染目前已知是在vmware虛擬機上。
setAttribute除了Qt::AA_ShareOpenGLContexts,其他都是對主程序有作用。對於webengine則是通過參數列表來實現。
- AA_UseSoftwareOpenGL會極大的加深cpu使用率,所以對於圖形圖像要謹慎使用此操作。
AA_ShareOpenGLContexts + AA_UseOpenGLES
webengineview 全部cpu,未啟用
qml 視頻使用gpu
AA_ShareOpenGLContexts + AA_UseDesktopOpenGL
webengineview 大部分gpu,Rasterization disable
qml 視頻使用gpu
cpu和gpu比AA_UseOpenGLES使用率略低。
AA_ShareOpenGLContexts + AA_UseSoftwareOpenGL
webengineeview全部cpu,未啟用
qml使用cpu
性能排名
DesktopOpenGL > OpenGLES > Soft
RX580支持開啟web 使用gpu,即context共享,但是不可主動開啟gpu光柵化
RX580開啟GLES,qml的視頻區域渲染是gpu,但是web里面,畫筆及其卡頓,都是cpu運算的。但是web的chrome://gpu頁面卻顯示軟件模擬,能否說明es的設置是無效的?但是為何gpu也的確會占用呢?opengles 和台式機顯卡有什么關系?不可用嗎?
關於webengineview的測試
默認情況下和cef的差異性
1 忽略黑名單后(--ignore-gpu-blacklist)
多了一項,但是surface synchronization仍然不行
2 開啟光柵化 (--enable-gpu-rasterization)
僅有Surface Synchronization
一項不同,另一項是不可知,和可知不可用不同。
實機測試
測試流程:上古機器首先檢驗是否支持web加速,如果支持,逐步放開內部參數設置。
問題1:enable光柵化,如果不支持,會出現什么情況?會默認使用不加速的嗎?
問題2:如果忽略了黑名單列表會出現什么現象?
AMDx255,HD4300亮機卡,娛樂大師跑分23000,2235。支持GL3.2/3.3 core(為何GL2.0core不支持?),不支持opengles,500G,7200轉,啟動時間2.65 1.65 2.25 1.40 1.39
畫筆繪制低,尚可勉強使用
AMDx255,Nvidia6150se 430自帶亮機卡,娛樂大師,23000,455,支持gl2.0/2.1 noprof,其余全部不支持
畫筆不可用狀態,更慢
啟動時間2.00 1.06 0.98 1.5 1.06
附件列表