Yes, I nearly realized your point when I was searching in the drawing source codes to find out what is going on, for example in the “lv_draw_blend.c” functions, DMA2D is not being used most of the times, the general format is something like this:
/*Simple fill (maybe with opacity), no masking*/
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
/* DMA2D being used here */
}
/*Masked*/
else {
/* DMA2D never being used here */
}
and I realized that the application didn’t enter the first section most of the times, and enters the “Masked” part; which admits that "DMA2D only supports very simple operations"
Yes, you’re right, I found out that LVGL handle the ARGB8888 completely separately (by looking at “lv_draw_img” for example) so I test with LV_COLOR_DEPTH 32 and still not major difference in the performance.
I’m using 2 draw buffers with 40 pixels height each (40 x 480) in the SRAM, and it’s much faster than 2 True screen sized draw buffers located in SDRAM, tested it few days ago.
Anyways thanks for your explanation, definitely helped me out.