硬汉嵌入式论坛

 找回密码
 立即注册
查看: 461|回复: 1
收起左侧

[ThreadX全家桶] Linux下移植GUIX显示重绘花屏问题(行偏移问题)

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2023-7-7 16:15:09 | 显示全部楼层 |阅读模式
本帖最后由 superleo_2020 于 2023-7-7 16:59 编辑

与其他GUI一样,GUIX获得输入焦点后光标需要重绘反显,在LINUX下开发过程中发现光标反显出现花屏。

光标切换

光标切换


控件持续光标时为:蓝色控,现需要切换到红色所在控件,正常情况下应该被重绘为蓝色,表示获取了光标。但实际上重绘花屏,如下图:

光标花屏.png
光标重绘区域花屏。
笔者在进一步调试发现,但凡涉及重绘都会花屏。

重绘花屏.png
参考研究发现自STM32F429开始,一个类似GPU的外设开始加入到STM32的单片机中,ST称之为Chrom-ART Accelerator,也叫DMA2D(本文将使用此名称)。DMA2D可以在很多2D绘图的场合提供加速,完美嵌合了现代显卡中“GPU”的功能。STM32F429 DMA2D模块具有“
行偏移功能”,该功能是因为矩形在内存中的地址不连续,所以在驱动中在填充完一行的数据后,需要跳过多少个像素(即图中黄色区域的长度)。
复制区域.png
偏移区域.png
计算跳过的像素数量有一个简单的方法,即显示区域的宽度减去矩形的宽度即可。
绘图驱动内,需要跳过相关的像素,具体如下:
计算OOR.png
计算行偏移参数:
行偏移像素算法.png
每复制一行需要偏移的像素内存。
光标OK.png


进行了上述操作后,光标切换正常,整屏刷也正常了。

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2023-7-8 09:10:19 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-7 20:53 , Processed in 0.167230 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表