Description
What MCU/Processor/Board and compiler are you using?
ESP32 S3, using the Arduino IDE to code and compile.
What LVGL version are you using?
8.3
What do you want to achieve?
I have a round LCD connected to a ESP32, to be exact this one: Waveshare.
It is going to be placed in a wheel and since it is going to be rotating I thought it would be cool, if using the onboard IMU I can calculate the downwards angle and always rotate the main object so its upright.
Currently I am just testing the lv_obj_set_style_transform_angle() function. The problem is that transform rotation seems to be consuming a lot of memory or its allocation takes a lot of CPU time CPU time. If the object I am trying to rotate is too large my program crashes and I get a “Guru Meditation Error: Core 1 panic’ed (StoreProhibited). Exception was unhandled”.
What have you tried so far?
I have set:
#define LV_COLOR_SCREEN_TRANSP 1
When I set:
#define LV_MEM_CUSTOM to 1
The program can rotate very large objects, but after it completes its first rotation operation the fps drops from 30 to 3 permanently.
After the first rotation the program slows way down, it goes from 30 fps to 3.
With LV_MEM_CUSTOM set to 0 I have tried playing around with different memory sizes by setting:
#define LV_MEM_SIZE
and
#define LV_DISP_ROT_MAX_BUF
to increasingly different sizes, but they did not fix anything. I have also tried to increase the draw buffer size, but that aswell did not change anything. The best result ive gotten so far has been with
#define LV_MEM_CUSTOM 1
and
#define LV_MEMCPY_MEMSET_STD 1
with around stable 15-17 fps. I am really hoping for 30fps though.
General question
Is there anything else I can try to do? Is it even possible to get it better?