7 inch Lcd - 800x480 - Screen refresh problem

I’ll try to describe the problem.
I am using the hardware in the most basic possible to avoid problems.

My hardware is a board called Open429I-C.
https://www.waveshare.com/wiki/Open429I-C

The lcd is the one in this link.

After doing some tests with the examples of this link https://www.waveshare.com/w/upload/7/7f/Open429I-C-Demo-HAL.7z, all examples with lcd work well, as expected.

Because this configuration does not use any external drivers such as SSD1963 or ST7565, all lcd management is with LTDC, SDRAM, and DMA.

I used the example “stm32f429_disco_no_os_sw4stm32” that does not use DMA2D.
Taking advantage of the fact that I mentioned the DMA2D of this example, when TFT_USE_GPU = 1, several errors occur in the compilation.

In the first image, I put a breakpoint before moving the circle, so far so good.

    /*Create an array for the points of the line*/
static lv_point_t line_points[] = { { 5, 5 }, { 70, 70 }, { 120, 10 }, { 180, 60 }, { 240, 10 } };

/*Create line with default style*/
lv_obj_t* line1;
line1 = lv_line_create(lv_scr_act(), NULL);
lv_line_set_points(line1, line_points, 5); /*Set the points*/
lv_obj_align(line1, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);

static lv_style_t style_circ;
lv_style_copy(&style_circ, &lv_style_pretty_color);
style_circ.body.radius = LV_RADIUS_CIRCLE;

lv_obj_t* circ;
circ = lv_obj_create(lv_disp_get_scr_act(NULL), NULL);
lv_obj_set_size(circ, 40, 40);
lv_obj_set_style(circ, &style_circ);
lv_obj_set_click(circ, false);
lv_obj_set_pos(circ, 40, 40);

uint8_t  cont = 0;
uint16_t rndX = 0;
while (1) {
    HAL_GPIO_TogglePin(GPIOF, LED1_Pin);
    HAL_Delay(10);
    lv_task_handler();

    if (cont++ > 50) {
        cont = 0;
        rndX = lv_obj_get_x(circ) + 40;
        if (rndX > 760) {
            rndX = 40;
        }
        lv_obj_set_pos(circ, rndX, lv_obj_get_y(circ));
    }
}

More when I move the object, it doubles.

video

Any idea how to solve this?

Hi,

does it work without DMA and DMA2D?