Description
What MCU/Processor/Board and compiler are you using?
MCU: RT1052
OS: RTThread 4.0
LVGL:v7.10
LCD: 1024 x 600
What do you want to achieve?
Drag Page(1024x600),FPS >20
What have you tried so far?
Drag small element(page),FPS>20;PXP Enable, double dispbuff
Code to reproduce
dispbuff
ALIGN(64) lv_color_t frame_buffer1[LCD_HEIGHT*LCD_WIDTH] SECTION("Cacheable");
ALIGN(64) lv_color_t frame_buffer2[LCD_HEIGHT*LCD_WIDTH] SECTION("Cacheable");
lv_disp_buf_init(&disp_buf, frame_buffer1, frame_buffer2, LCD_HEIGHT*LCD_WIDTH);
lcd flush
void LCDIF_IRQHandler(void)
{
uint32_t intStatus = ELCDIF_GetInterruptStatus(LCDIF);
ELCDIF_ClearInterruptStatus(LCDIF, intStatus);
//if (s_framePending)
{
if (intStatus & kELCDIF_CurFrameDone)
{
//if(s_framePending)
s_frameCount++;
s_framePending = false;
// if(dynamic_sem != NULL)
// rt_sem_release(dynamic_sem);
}
}
__DSB();
}
static void lcd_fb_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
{
int x1, x2, y1, y2;
DCACHE_CleanInvalidateByRange((uint32_t)color_p, LCD_WIDTH * LCD_HEIGHT * 2);
ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)color_p);
//rt_sem_take(dynamic_sem, RT_WAITING_FOREVER);
s_framePending = true;
while(s_framePending)
;
lv_disp_flush_ready(disp_drv);
}
Screenshot and/or video
Finger drag black page,FPS is 5