想了解更多关于开源的指南内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
因为当前OH代码内部为默认启用GPU渲染,当我们关闭使用GPU,富分享并使用CPU渲染时,设备OH代码没有做好分支判断,移植导致黑屏。指南
解决办法:修改rs_base_render_engine.cpp文件中的显示NeedForceCPU函数,强制使用cpu。调试
偏色原因猜测是富分享OH申请创建图层时申请的格式不一致,合成时导致的问题,GPU渲染无此问题。
解决办法:修改display适配中的drm_allocator.cpp文件,修改内存申请时的buffer格式,把非【PIXEL_FMT_BGRA_8888】格式转为【PIXEL_FMT_BGRA_8888】格式。
修改后:
OH官方提供了dpi的配置,具体位置如下图,rk3568之外的设备使用的是other文件夹下的配置。
查看display_manager_config.xml,发现有提供dpi的配置,但是因为install_enale=false的原因导致配置文件没有加入编译,配置不生效。
一个办法是修改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添加如下配置:
import("//build/ohos.gni")
ohos_prebuilt_etc("window_manager_config") {
source = "window_manager_config.xml"
install_enable = true
part_name = "qualcomm_products"
relative_install_dir = "window/resources"
}
ohos_prebuilt_etc("display_manager_config") {
source = "display_manager_config.xml"
install_enable = true
part_name = "qualcomm_products"
relative_install_dir = "window/resources"
}
group("window_config") {
deps = [
":display_manager_config",
":window_manager_config",
]
}
这里的dpi并不能直接套用网上的计算dpi的公式得出的结果,需要自己尝试几个值查看显示效果,这个是我适配小米6的dpi值,供大家参考。
想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
责任编辑:jianghua 来源: 51CTO 开源基础软件社区 鸿蒙CPU渲染(责任编辑:探索)
公司证券代码为600955 维远股份今日在上海证券交易所主板上市
非凡中国(08032.HK)因购股权获行使发行2000万股 每股发行价港币0.478元
新三板市场就迎来公募基金“入局”再提速 流动性问题成首要考验点