OpenHarmony富設備移植指南(5.1)顯示調(diào)試經(jīng)驗分享
1、CPU渲染適配,開機后渲染服務能接管屏幕但是黑屏
因為當前OH代碼內(nèi)部為默認啟用GPU渲染,當我們關閉使用GPU,并使用CPU渲染時,OH代碼沒有做好分支判斷,導致黑屏。
解決辦法:修改rs_base_render_engine.cpp文件中的NeedForceCPU函數(shù),強制使用cpu。
2、系統(tǒng)整體顏色偏色問題
偏色原因猜測是OH申請創(chuàng)建圖層時申請的格式不一致,合成時導致的問題,GPU渲染無此問題。
解決辦法:修改display適配中的drm_allocator.cpp文件,修改內(nèi)存申請時的buffer格式,把非【PIXEL_FMT_BGRA_8888】格式轉(zhuǎn)為【PIXEL_FMT_BGRA_8888】格式。
修改后:
3、進入桌面后顯示比例不協(xié)調(diào)
OH官方提供了dpi的配置,具體位置如下圖,rk3568之外的設備使用的是other文件夾下的配置。
查看display_manager_config.xml,發(fā)現(xiàn)有提供dpi的配置,但是因為install_enale=false的原因?qū)е屡渲梦募]有加入編譯,配置不生效。
一個辦法是修改install_enable=true,然后修改other下的display_manager_config.xml。
按照解耦的思想,這個自定義的配置應該剝離出官方代碼,放到我們適配的文件夾中自己管理,所以我想到了一個解決辦法,同樣通過ohos_prebuilt_etc模板把編譯配置跟配置文件都放到board文件夾中,自己管理,不修改官方代碼,代碼如下。
board下添加window_cfg,復制rk3568的配置到目錄下,添加BUILD.gn。
上層BUILD.gn的sigit_group中添加window_cfg:
window_cfg文件夾下的BUILD.gn添加如下配置:
這里的dpi并不能直接套用網(wǎng)上的計算dpi的公式得出的結(jié)果,需要自己嘗試幾個值查看顯示效果,這個是我適配小米6的dpi值,供大家參考。