Hi @jakkra ,
As I mentioned in my previous post I have no experience of Zephyr, I looked at it along time ago but went with FreeRTOS for my own projects as I personally found it much more intuitive. Looking at the code I can see your statement with regard to the display buffering seems correct. I am not sure but it doesn’t look like LVGL has been implemented on Zephyr in a multi-threaded way either. With out seeing all the source code though it is quite hard to speculate, but if the display_write()
function is blocking then this is definitely bad… In an ideal world the function should really just program the DMA and kick it off which takes a few CPU cycles then an interrupt can notify using a Zephyr OS primitive that the DMA is complete. Also you should check this post/solution carefully if you are using double buffering with Version 8 as it is possible this scenario could be occurring for you also(It certainly cause massive performance issues for my projects!). I have also today written up another long post explaining a good way to structure LVGL with FreeRTOS which I am sure could also be applied to Zephyr, maybe it might be worth a look also.
I hope that helps.
Kind Regards,
Pete