Refresh buffer problem


I want to use lvgl as OSD on my video frame buffer. when I try to full refresh the OSD the video buffer get a lot of delay and when I try to disable full_refresh flag the place of refreshing changed and look like below image

What MCU/Processor/Board and compiler are you using?

Rockchip SoC

What LVGL version are you using?


What do you want to achieve?

want to refresh the OSD buffer properly

What have you tried so far?

I tried this solution but doesn’t work for me Framebuffer Refresh Problem
the direct_mode also delayed my video

Code to reproduce

My display driver configuration code

static void dummy_flush_cb(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p);
lv_color_t test_fb[LCD_PANEL_HEIGHT][LCD_PANEL_WIDTH];
static lv_color_t disp_buf1[LCD_PANEL_HEIGHT][LCD_PANEL_WIDTH];
static lv_disp_draw_buf_t draw_buf;

    lv_disp_draw_buf_init(&draw_buf, disp_buf1, NULL, LCD_PANEL_HEIGHT * LCD_PANEL_WIDTH);

    static lv_disp_drv_t disp_drv;
    disp_drv.draw_buf = &draw_buf;
    disp_drv.flush_cb = dummy_flush_cb;
    disp_drv.hor_res = LCD_PANEL_WIDTH;
    disp_drv.ver_res = LCD_PANEL_HEIGHT;
    disp_drv.full_refresh = 0;
    disp_drv.screen_transp = 1;

Screenshot and/or video