我正在使用rt1052的pxp将横屏旋转成竖屏显示,但是在不断刷新的情况下,整体显示会向下偏移,这是为什么?
static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
{
lv_area_t dest_area =
{
.x1 = 0,
.x2 = 480 - 1,
.y1 = 0,
.y2 = 800 - 1,
};
lv_gpu_nxp_pxp_blit(((lv_color_t *)s_inactiveFrameBuffer), area, 800, color_p, area,480, LV_OPA_COVER, LV_DISP_ROT_270);
DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE);
ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)s_inactiveFrameBuffer);
s_framePending = true;if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE)
{
/* IMPORTANT!!!
* Inform the graphics library that you are ready with the flushing*/
lv_disp_flush_ready(disp_drv);
}
else
{
PRINTF("Display flush failed\r\n");
assert(0);
}
}
嗨@dsd ,
LV_USE_GPU_NXP_PXP_AUTO_INIT 允许 LVGL 利用 PXP 进行内部控件渲染,当应用程序还并行使用此 PXP 进行全屏旋转时,这肯定会导致问题。然而,这可能并非问题的根源。
从初始代码来看,你似乎没有使用 dest_area,或者说你将 area 同时用作 PXP blit 的源和目标,这意味着只有部分脏区域可能会被放置在不同的绝对位置,而不是预期的位置。
更奇怪的是在同一个工程下会有两种不同的结果,我认为配置应该是相同的
没有发生显示偏移
发生显示偏移