Blurred screen display

Description

static lv_color_t buf_3_1[MY_DISP_HOR_RES * MY_DISP_VER_RES]
attribute((section(“.bss.ARM.__at_0XC00BB800”)));
static lv_color_t buf_3_2[MY_DISP_HOR_RES * MY_DISP_VER_RES] attribute((section(“.bss.ARM.__at_0XC013B000”)));
lv_display_set_buffers(disp, buf_3_1, buf_3_2, sizeof(buf_3_1), LV_DISPLAY_RENDER_MODE_DIRECT);

If I set it to LV_DISPLAY_RENDER_MODE_DIRECT, the screen will become blurred, while setting it to LV_DISPLAY_RENDER_MODE_PARTIAL or LV_DISPLAY_RENDER_MODE_FULL will display normally. Does anyone know where the problem lies

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

STM32H743IIT6
Keil AC6

Code to reproduce

Add the relevant code snippets here.

The code block(s) should be between ```c and ``` tags:

    /*-------------------------
     * Initialize your display
     * -----------------------*/
    disp_init();

    /*------------------------------------
     * Create a display and set a flush_cb
     * -----------------------------------*/
    lv_display_t * disp = lv_display_create(MY_DISP_HOR_RES, MY_DISP_VER_RES);
    lv_display_set_flush_cb(disp, disp_flush);
	lv_tick_set_cb(xTaskGetTickCount);
	
    /* Example 3
     * Two buffers screen sized buffer for double buffering.
     * Both LV_DISPLAY_RENDER_MODE_DIRECT and LV_DISPLAY_RENDER_MODE_FULL works, see their comments*/
    static lv_color_t buf_3_1[MY_DISP_HOR_RES * MY_DISP_VER_RES] __attribute__((section(".bss.ARM.__at_0XC00BB800")));
    static lv_color_t buf_3_2[MY_DISP_HOR_RES * MY_DISP_VER_RES] __attribute__((section(".bss.ARM.__at_0XC013B000")));
    lv_display_set_buffers(disp, buf_3_1, buf_3_2, sizeof(buf_3_1), LV_DISPLAY_RENDER_MODE_PARTIAL);

Hi,
Are you using LTDC?

Yes, I am using LTDC

Try the following:
Move the function:

lv_disp_flush_ready(disp_drv);

To the interrupt handler of the LTDC.

Hello, I have tried it, but the result is still the same. It has no problem refreshing the first frame (first image), but after refreshing the second frame, it will become like this (second image), and when I slide it, it will become like the third and fourth images



This is not the issue of LvGL.
in direct mode, you need to fill the display pixel by pixel.
use for loop to do that.
Or use DMA2D for improved performance and reduce CPU usage.

Thank you