【Semidrive X9HP】硬件投屏设置仪表图层层级

一、问题描述

仪表屏的弹窗会被中控的投屏内容覆盖,导致在投屏的时候看不到仪表的弹窗内容,不符合实际使用需求,需要弹窗显示在投屏内容的上层。


二、问题分析与解决

1. 打入硬件投屏补丁(补丁如附件),仪表会显示在中控上层,但是打入后仪表屏显示完开机动画后就没有显示了,AP2 kernel 一直打印以下 log:

[drm] sdrv_set_frameinfo skip layer, format[XR24]

经过分析,该 log 是更新了 PTG4.3 版本的 drm 后才会有,在 PTG4.3 drm 中遇到 XRGB8888 的数据会直接返回,不进行投屏:

if (layer->format == DRM_FORMAT_XRGB8888) {

DRM_INFO("%s skip layer, format[%c%c%c%c]\n", __func__,

layer->format & 0xff, (layer->format >> 8) & 0xff, (layer->format >> 16) & 0xff,(layer->format >> 24) & 0xff);

return 0;

}
 

2. 把以上代码注释,让投屏消息继续发送,并且在 R 核添加了打印确认有收到投屏消息以及确认了图层分辨率都是没问题的,此时仪表屏仍然没有显示。

3. 把 dts 还原,只修改 drm 版本,测试仪表屏有显示,排除问题跟 drm 版本的关系。

4. 向原厂咨询得知 XRGB8888 格式的数据不支持投屏,需要更换仪表的数据格式。仪表使用 weston 进行显示,因为需要在 Android 投屏的时候实现仪表的部分透明来显示 Android 的投屏内容,所以建议使用 ARGB8888 格式的数据来设置 alpha 通道。在 weston.ini 更改 gbm-format 项为 ARGB8888 发现不能显示,改成 RGB565 则可以显示。后续发现是 weston 源码不支持 ARGB8888 的输入,确认到 kernel 是支持该格式的,然后修改 weston 源码使其支持ARGB8888 的配置:

diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 8e1e788..b7fb606 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -2159,6 +2159,9 @@ drm_output_init_pixman(struct drm_output *output, struct drm_backend *b)case GBM_FORMAT_RGB565:pixman_format = PIXMAN_r5g6b5;break;


+              case GBM_FORMAT_ARGB8888:
+                      pixman_format = PIXMAN_a8r8g8b8;
+                      break;
              default:
                      weston_log("Unsupported pixman format 0x%x\n", format);
                      return -1;
@@ -2440,6 +2443,8 @@ parse_gbm_format(const char *s, uint32_t default_value, uint32_t *gbm_format)
              *gbm_format = GBM_FORMAT_RGB565;
      else if (strcmp(s, "xrgb2101010") == 0)
              *gbm_format = GBM_FORMAT_XRGB2101010;
+      else if (strcmp(s, "argb8888") == 0)
+              *gbm_format = GBM_FORMAT_ARGB8888;
      else {
              weston_log("fatal: unrecognized pixel format: %s\n", s);
              ret = -1;​

5. 修改后 ARGB8888 格式的仪表可以正常显示了,但发现 weston 的背景图无法设置为透明,并且 R5 的 MASK 合成不能满足显示需求(需要显示不规则形状的透明区域,并且透明的区域可变,而我了解的 MASK 区域是一个规则的图形并且是在初始化的时候就固定下来存放在 ddr 里面的),在开发板设置 weston.ini 的 background-color=0x0 来测试,R5 那边收到的数据是 0xff000000,并且无论如何修改 background-color 的值,R5 那边的 alpha 值都是 0xff。随后更换了一张本来就透明的背景图,经过 weston 传到 R5 后 alpha 值就变成了 0xff。

6. 咨询了原厂并查询资料得知 weston 源生应用不支持将背景图透明,该功能需要更换为其他显示架构。

 登录大大通,了解更多详情,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SOC子模块---RTC and watchdog

RTC RTC大致执行过程: 对SOC 中的锁相环或者外部晶振的时钟进行计数;产生时,分,秒的中断;送给中断控制器;中断控制器进行优先权选择后送给cpu;Cpu执行中断服务程序;在中断服务程序…

随机生成用户名、密码、注册时间【Excel】

1.1简介 最近想虚拟一些数据,看下有没有自动生成的工具。百度看了下,大概有这么几种方法 1.excel内置公式函数处理 2.使用使用VBA宏生成随机 3.下载方方格子,emm工具是个好工具,蛮多功能的,每月8块 4.Java函数实现…

python程序打包

目录 1. 命令2. 安装2.1 PyInstaller2.2 cx_Freeze(笔者未用过) 3. 打包示例3.1 在 pycharm 中执行3.2 若使用打包命令时报错3.3 路径问题 python打包成可执行文件,用于在没有Python环境的地方运行该程序,与qt打包类似。(笔者写的qt打包地址&…

鸿蒙实战开发:【7日天气预报】

先来看一下效果 本项目界面搭建基于ArkUI中TS扩展的声明式开发范式, 数据接口是[和风(天气预报)], 使用ArkUI自带的网络请求调用接口。 我想要实现的一个功能是,查询当前城市的实时天气, 目前已实现的功…

聚类算法之高斯混合模型聚类 (Gaussian Mixture Model, GMM)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 高斯混合模型(GMM)是统计模型中的一颗璀璨之星,它为数据提供了一种复杂而又强大的表示方法。在机器学习的许多…

9. Linux 信号详解

Hi, 大家好! 本篇开始讲解Linux中信号的基本知识。 一、信号基本概念 信号是事件发生时对进程的通知机制,也可以把它称为软件中断。信号与硬件中断的相似之处在于能够打断程序当前执行的正常流程, 其实是在软件层次上对中断机制的一种模拟。 信号编号: 每个信号都有一个唯一…

美易官方:“巴菲特指标”创两年新高,拉响股市泡沫警报

近年来,随着全球经济的不断发展和资本市场的日益成熟,股市成为了越来越多人关注和投资的领域。然而,股市波动的不确定性也让许多投资者倍感焦虑。最近,“巴菲特指标”创两年新高,引发了市场对于股市泡沫的担忧。 “巴菲…

高性能计算——指令表

指令表 文章目录 指令表吞吐量计算示例一般情况在数字电子学中,执行阶段的交错是一个通用概念,不仅应用于主CPU流水线,还应用于独立指令和内存的层面。大多数执行单元都有自己的小流水线,可以在前一个指令之后一到两个周期内接收另一个指令。 在这种情况下,使用两种不同的…

并查集|1971. 寻找图中是否存在路径、684.冗余连接、685.冗余连接II

目录 并查集基础 1971. 寻找图中是否存在路径 684.冗余连接 685.冗余连接II 并查集基础 并查集主要有三个功能。 寻找根节点,函数:find(int u),也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合,函数&#xf…

【深度学习】一文搞懂 如何计算图像数据集的RGB均值和方差(超详细的哦~)

计算图像数据集的RGB均值和方差 1、引言2、RGB均值和方差2.1 计算RGB均值和方差原因2.2 计算RGB均值和方差步骤2.3 代码实现2.3.1 TensorFlow计算RGB均值和方差2.3.2 PyTorch计算RGB均值和方差 3、总结 1、引言 小屌丝:鱼哥,帮个忙呀 小鱼:在…

了解Spring:Java开发的利器

Spring是一款开源的轻量级Java开发框架,旨在提高开发人员的效率和系统的可维护性。本文将介绍Spring的基本概念、使用优势、设计模式以及与Spring MVC和Spring Boot的关联。 什么是Spring? Spring是一款开源的轻量级Java开发框架,它由多个模…

Flink中流式的各种聚合

11.1 MiniBatch 聚合 针对无界聚合算子,说简单点就是把一组输入的数据放到缓存里,减少吞吐的开销 默认情况下,对于无界聚合算子来说,mini-batch 优化是被禁用的。开启这项优化,需要设置选项 TableConfig configurat…

STM32之HAL开发——HAL库框架介绍

HAL库外设设计思想 HAL库借鉴面向对象的设计思想,将外设驱动封装为对象。 HAL库使用主线 HAL使用的主要用在俩个地方,无外乎外设初始化以及外设的使用。想用好这两个功能,我们首先得对外设的封装有一定的了解。 句柄结构体 xx_HandleTypeDef…

【吾爱破解】Android初级题(二)的解题思路 _

拿到apk,我们模拟器打开看一下 好好,抽卡模拟器是吧😀 jadx反编译看一下源码 找到生成flag的地方,大概逻辑就是 java signatureArr getPackageManager().getPackageInfo(getPackageName(), 64).signaturesfor (int i 0; i &l…

数据结构(C语言)代码实现(十一)——离散事件模拟

目录 参考资料 代码实现 有序链表头文件LinkList.h 链队列LinkQueue.h 银行业务模拟程序头文件 Bank_Simulation.h 具体函数实现以及主函数 实验中遇到的问题 参考资料 1、数据结构严蔚敏版 2、大佬已有的成套的作业。基本思路照搬大佬和课本,不过自己这些代…

Spring MVC面试简答题

简答题 简述Spring MVC的设计原理和主要组成部分。解答: Spring MVC的设计原理基于MVC(Model-View-Controller)设计模式,它将应用程序划分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。 Model:代表应用程序的数据和业务逻辑。View:负责渲染用户界…

批量高效剪辑视频,轻松调整视频时长,轻松打造完美节奏

在数字化时代,视频内容已成为我们生活中不可或缺的一部分。无论是社交媒体上的短视频,还是专业影视制作中的长片,视频剪辑都扮演着至关重要的角色。然而,面对大量视频素材,如何高效地进行剪辑调整,让每一帧…

Express:快速搭建Node.js应用的基石

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

华为OD机试 - 打印任务排序 - 队列(Java 2024 C卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&a…

Rust 的 Vec 排序方法汇总

在 Rust 中,Vec 类型的排序可以通过使用 sort 方法来实现。sort 方法是 Vec 的一个成员方法,它会对向量中的元素进行就地排序(即不返回新的排序后的向量,而是直接修改原始向量)。此外,sort_by 和 sort_by_k…