WhyCan Forum(哇酷开发者社区)

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

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

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

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

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,190

Re: lvgl移植,图像撕裂

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

离线

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

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

Re: lvgl移植,图像撕裂

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

离线

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

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

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

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,190

Re: lvgl移植,图像撕裂

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

离线

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

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

Re: lvgl移植,图像撕裂

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

离线

#7 2020-05-16 15:48:38

simon
会员
注册时间: 2019-05-11
累计积分: 5

Re: lvgl移植,图像撕裂

修改一下 lv_conf.h 里面的颜色深度吧

离线

#8 2020-05-26 11:52:25

wyhuage
会员
注册时间: 2019-12-26
累计积分: 1

Re: lvgl移植,图像撕裂

色深不对

离线

#9 2020-09-08 08:52:07

redstar
会员
注册时间: 2020-08-30
累计积分: 2

Re: lvgl移植,图像撕裂

还有这种操作

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB