当前位置: 首页 > news >正文

在OpenHarmony上适配图形显示【1】——确认drm是否正常

笔者最近在调试OpenHarmony图形显示部分,现将经验分享如下。在开始分享之前笔者希望读者提前阅读一下内容便于理解一下内容。

  • OpenHarmony图形HDI基础适配及点屏(笔者会在此篇文章基础上做知识点的补充)

文章写作环境

  • OpenHarmony 5.0.0和5.0.3版本
  • dayu200 rk3568

1.drm驱动测试

在适配OpenHarmony的图形显示之前,需要测试设备屏幕drm内核态驱动是否正常。这里有两种方法,第一种是使用libdrm的modetest,第二种是自行编写测试代码测试。
(由于modetest命令测试设备比较受限,笔者推荐使用第二种)

1.1 使用libdrm的modetest,使用atomic方式测试drm接口成功,才能确保HDI正常使用。

详细请参考OpenHarmony图形HDI基础适配及点屏

笔者在给出5.0.0至5.0.3版本中modetest的编译方法

ohos_executable("modetest") {sources = ["//third_party/libdrm/tests/modetest/buffers.c","//third_party/libdrm/tests/modetest/cursor.c","//third_party/libdrm/tests/modetest/modetest.c","//third_party/libdrm/tests/util/format.c","//third_party/libdrm/tests/util/kms.c","//third_party/libdrm/tests/util/pattern.c",]cflags_c = ["-Wno-unused-variable",]include_dirs = ["//third_party/libdrm/tests","//third_party/libdrm/tests/util","//third_party/libdrm/tests/modetest",]deps = ["//third_party/libdrm:libdrm",]install_images = [ "system" ]install_enable = truepart_name = "xxxxxxx"
}

1.2 当soc提供的drm内核态驱动为非标准实现,或者modetest中找不到drm设备时,这时候需要自行编写modetest atomic方式样例去测试drm内核态驱动是不是ok的

其中rk、树莓派、amd显卡这些是可以使用modetest命令进行测试的。

image.png

1.笔者使用的是这里的开源样例
https://github.com/dvdhrm/docs/tree/master/drm-howto

image.png

2.然后把样例加入编译

ohos_executable("modeset_atomic") {sources = ["drm-howto/modeset-atomic.c",]cflags_c = [ "-Wno-error","-Wno-initializer-overrides" ]  deps = ["//third_party/libdrm:libdrm",]install_images = [ "system" ]install_enable = truepart_name = "xxxx"
}

3.编译好之后,执行测试用例,注意,不能有其他进程占用/dev/dri/card0 节点!!!

# 查看/sys/kernel/debug/dri/0/clients观察那几个服务占用了/dev/dri/card0,然后全部关掉
cat /sys/kernel/debug/dri/0/clientscommand  tgid dev master a   uid      magicallocator_host   577   0   n    y  3041          0composer_host   578   0   y    y  3036          0composer_host   578   0   n    n  3036          0render_service   624 128   n    n  1003          0bootanimation   623 128   n    n  1003          0m.ohos.systemui  1579 128   n    n 10009          0render_service   624   0   n    n  1003          0m.ohos.launcher  1755 128   n    n 20010017          0# 关闭render service和composer_host
service_control stop render_service
service_control stop composer_host
service_control stop allocator_host

4.最后执行开源样例即可

./modeset_atomic

5.运行效果

image.png

image.png

2.总结

1.libdrm的modetest不是所有设备上都能使用它进行测试,一些非标准实现drm的设备需要自行编写测试样例进行测试

2.执行测试用例的时候注意不要有服务占用/dev/dri/card0节点

3.参考资料

  • https://laval.csdn.net/66909cf352d42741cd878b3e.html#devmenu19

文章转载自:

http://hOGB9HZ9.fgLzk.cn
http://gEsFCDqg.fgLzk.cn
http://CQqXHHm4.fgLzk.cn
http://NsBEdo0d.fgLzk.cn
http://h4CUx2aZ.fgLzk.cn
http://sowNxgOX.fgLzk.cn
http://7wF4JURU.fgLzk.cn
http://3F4smzIA.fgLzk.cn
http://QAEi9vsY.fgLzk.cn
http://EWnEGysI.fgLzk.cn
http://XLYRujdH.fgLzk.cn
http://jRfqQLVb.fgLzk.cn
http://KhxtKx2f.fgLzk.cn
http://8H6IKlHL.fgLzk.cn
http://inAWKX7v.fgLzk.cn
http://rP6aRyhj.fgLzk.cn
http://5jB0h1fl.fgLzk.cn
http://9OGYlK1t.fgLzk.cn
http://Jcz3tHNz.fgLzk.cn
http://3yNk6ctv.fgLzk.cn
http://NXAVhyV1.fgLzk.cn
http://p4opgWYq.fgLzk.cn
http://O02rWZeE.fgLzk.cn
http://nDa9Sc31.fgLzk.cn
http://W2CE36VQ.fgLzk.cn
http://NQxSp5dv.fgLzk.cn
http://0oT5awCq.fgLzk.cn
http://cWPVGNOb.fgLzk.cn
http://ImUJZ60a.fgLzk.cn
http://8bkawGcm.fgLzk.cn
http://www.dtcms.com/a/372132.html

相关文章:

  • 四大金刚之计算机组成原理
  • 第 15 篇:PCA与降维——如何在信息爆炸的时代,抓住“主要矛盾”?
  • 《沈南鹏传 - 做最擅长的事》(中篇)读书笔记
  • 还在重启应用改 Topic?Spring Boot 动态 Kafka 消费的“终极形态”
  • 纸飞机飞行漂流瓶小游戏抖音快手微信小程序看广告流量主开源
  • 《沈南鹏传 - 做最擅长的事》(下篇)读书笔记
  • 网易UU远程,免费电脑远程控制软件
  • Prometheus 存储学习
  • 八.迪杰斯特拉(Dijkstra)算法
  • 大模型术语
  • Python入门教程之关系运算符
  • 9. Mono项目与Unity的关系
  • 【C#】 资源共享和实例管理:静态类,Lazy<T>单例模式,IOC容器Singleton我们该如何选
  • 【C语言】函数指针的使用分析:回调、代码逻辑优化、代码架构分层
  • SQLAlchemy ORM-表与表之间的关系
  • 系统架构性能优化与容灾设计深度解析
  • K8s ConfigMap配置管理全解析
  • 【Beetle RP2350】人体运动感应警报系统
  • tomcat下载
  • 数据结构精讲:栈与队列实战指南
  • 风电设备预测性维护方案:AIoT驱动的风电运维智能化转型​
  • Shell脚本监控系统资源详解
  • Vue基础知识-脚手架开发-Vue Router路由及params、query传参
  • 鱼眼相机模型
  • 类的加载和对象的创建
  • trl GRPO源码分析:如何处理多个reward function?
  • 临床研究三千问——临床研究体系的3个维度(8)
  • TypeORM入门教程:@JoinColumn和@OneToOne的关系
  • html列表标签之无序列表
  • [1]-01-创建空工程