OpenHarmony图形HDI基础适配及点屏

本文档主要介绍图形基础适配及点屏。

环境说明:

OHOS版本: 适用3.2-Beta3及以上

内核版本: linux-5.10

硬件环境: Dayu200-rk3568及其它硬件

一、图形驱动测试

OH现有框架主要支持两种显示框架,drm和FB。目前OH上主流采用drm框架。

drm驱动是显卡驱动的一种架构。相比FB架构,DRM更能适应当前日益更新的显示硬件。比如FB原生不支持多层合成,不支持VSYNC,不支持DMA-BUF,不支持异步更新,不支持fence机制等等,而这些功能DRM原生都支持。同时DRM可以统一管理GPU和Display驱动,使得软件架构更为统一,方便管理和维护。

1.1 drm驱动测试

在用户态,drm提供了libdrm库,并提供了modetest测试程序,来测试drm驱动是否完成了基础适配。

在OpenHarmony的第三方库libdrm自带了modetest,但默认没有参考编译,编译方法如下:

1.1.1 环境搭建

1、 为 modetest 添加 BUILD.gn

ini 复制代码
import("//build/ohos.gni")
ohos_executable("modetest") {
  sources = [
    "buffers.c",
    "cursor.c",
    "modetest.c",
  ]

  cflags = [
      "-Wno-pointer-arith",
  ]

  include_dirs = [
    "../",
    ".",
  ]

  configs = [ "//third_party/libdrm:libdrm_config" ]

  public_configs = [ "//third_party/libdrm:libdrm_public_config" ]

  deps = [
    "//third_party/libdrm:libdrm",
    "//third_party/libdrm/tests/util/:util",
  ]

  public_deps = []

  install_images = [
    "system",
    "updater",
  ]
  part_name = "graphic_standard"
  subsystem_name = "graphic"
}

2、添加其它依赖:third_party\libdrm\tests\util\BUILD.gn

ini 复制代码
import("//build/ohos.gni")
ohos_static_library("util") {

  sources = [
    "format.c",
    "kms.c",
    "pattern.c",
  ]

  cflags = []

  include_dirs = [
    "../",
    ".",
  ]

  configs = [ "//third_party/libdrm:libdrm_config" ]

  public_configs = [ "//third_party/libdrm:libdrm_public_config" ]

  deps = [
    "//third_party/libdrm:libdrm",
  ]

  public_deps = []
}

3、加入编译框架,添加到graphic依赖项:

diff 复制代码
foundation/graphic/graphic_2d/bundle.json
diff --git a/bundle.json b/bundle.json
index 755e6d2..f1bb7ef 100755
--- a/bundle.json
+++ b/bundle.json
@@ -56,6 +56,8 @@
         "group_type": {
           "base_group": [
             "//third_party/libpng:libpng",
+            "//third_party/libdrm/tests/util:util",
+            "//third_party/libdrm/tests/modetest:modetest",
             "//foundation/graphic/graphic_2d/interfaces/kits/napi:napi_packages",
             "//foundation/graphic/graphic_2d/rosen/modules/composer:libcomposer",
             "//foundation/graphic/graphic_2d/rosen/modules/composer/native_vsync:libnative_vsync",

4、有个报错,提示这个未使用,注释的就好了

ini 复制代码
third_party\libdrm\tests\util\pattern.c:988
    // void *mem_base = mem;

5、开始编译并下载。生成的文件在/system/bin下

1.1.2 测试效果

6、执行modetest.

首先把render_service停止

arduino 复制代码
service_control stop render_service

-------------欲知详情,请移步LAVAL社区----------- laval.csdn.net/64c7a6439a1...

相关推荐
Dontla3 小时前
BootCDN介绍(Bootstrap主导的前端开源项目免费CDN加速服务)
前端·开源·bootstrap
特立独行的猫a5 小时前
uni-app 开发HarmonyOS的鸿蒙影视项目分享:从实战案例到开源后台
uni-app·开源·harmonyos·鸿蒙·影视
高建伟-joe7 小时前
内容安全:使用开源框架Caffe实现上传图片进行敏感内容识别
人工智能·python·深度学习·flask·开源·html5·caffe
StarRocks_labs9 小时前
StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢
数据库·starrocks·人工智能·开源·olap·mcp
MWHLS10 小时前
【以及好久没上号的闲聊】Unity记录8.1-地图-重构与优化
unity·开源
LunarCod21 小时前
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
linux·运维·服务器·ubuntu·docker·开源·sonarqube
无心水1 天前
【程序员AI入门:模型】19.开源模型工程化全攻略:从选型部署到高效集成,LangChain与One-API双剑合璧
人工智能·langchain·开源·ai入门·程序员ai开发入门·程序员的 ai 开发第一课·程序员ai入门
zkmall1 天前
商业架构 2.0 时代:ZKmall开源商城前瞻性设计如何让 B2B2C 平台领先同行 10 年?
架构·开源
zkmall1 天前
Java + 鸿蒙双引擎:ZKmall开源商城如何定义下一代B2C商城技术标准?
java·开源·harmonyos
说私域1 天前
基于开源链动2+1模式AI智能名片S2B2C商城小程序的低集中度市场运营策略研究
人工智能·小程序·开源·零售