WhyCan Forum

本站无需注册,无需积分,无需回复可下载所有资料,如果真的喜欢小站,请您注册之后请至少回复一个帖子激活Id,谢谢支持! 站长QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-07-10 14:54:07

c88377293
会员
注册时间: 2018-12-28
累计积分: 11

lvgl移植,图像撕裂

lvgl移植中,图像出现撕裂

test1

test2

同样的,移植AWTK的时候也出现类似的情况

test3


但是我自己实现的UI,却又是正常的,这是为什么,有哪位大神能帮忙看看

test4


我使用的是韦东山的jz2440,2.6内核

最近编辑记录 c88377293 (2019-07-10 14:54:38)

离线

#2 2019-07-10 15:33:16

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,389

Re: lvgl移植,图像撕裂

这个不算撕裂吧, 应该是配置不对,颜色深度,高宽等参数检查一下。

离线

#3 2019-07-10 15:52:59

c88377293
会员
注册时间: 2018-12-28
累计积分: 11

Re: lvgl移植,图像撕裂

晕哥,我检查过了,在电脑上模拟器运行是正常的,但是一放到开发板上就这样子了,awtk和lvgl都这样子,这就有点奇怪了

离线

#4 2019-07-10 16:14:53

c88377293
会员
注册时间: 2018-12-28
累计积分: 11

Re: lvgl移植,图像撕裂

问题找到,我移植的是最新的6.0的lvgl,然后和旧版本的刷新函数比较了下,差距如下

uint16_t * fbp16 = (uint16_t *)fbp;
int32_t y;
for(y = act_y1; y <= act_y2; y++) {
    location = (act_x1 + vinfo.xoffset) + (y + vinfo.yoffset) * finfo.line_length / 2;
    memcpy(&fbp16[location], (uint32_t *)color_p, (act_x2 - act_x1 + 1) * 2);
    color_p += w;
}


/*

旧版本

uint16_t * fbp16 = (uint16_t *)fbp;
int32_t y;
int32_t x;

for(y = act_y1; y <= act_y2; y++) {
    for(x = act_x1; x <= act_x2; x++) {
        location = (x + vinfo.xoffset) + (y + vinfo.yoffset) * finfo.line_length / 2;
        fbp16[location] = color_p->full;
        color_p++;
    }

    color_p += area->x2 - act_x2;
}

*/

将这里的刷新函数换成旧版本的,就解决了,但是还不是很理解代码的差异

离线

#5 2019-07-10 16:58:11

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,389

Re: lvgl移植,图像撕裂

那可能新版的兼容性没有测试好吧

离线

#6 2019-08-10 11:12:06

zq190kg
会员
注册时间: 2019-08-10
累计积分: 5

Re: lvgl移植,图像撕裂

是不是写点函数没有搞好?我自己优化过,试过出现这样的情况的,是memcopy的数量和地址出错,就会出现这样的错误的了

离线

页脚