The LVGL component is a powerful graphics library (see https://docs.lvgl.io/master/intro/index.html) - that offers a lot of power for displays in multiple environments.
I got it to work under the Arduino IDE but it crashed attempting to run from Flowcode. So - after a fair bit of debugging and a few 'gentle' tweaks to the lvgl code (I've given up numerous times) - I finally got it to work.
If you want to play. First save the following to your drive. Note that I am using a ST7789 display and the pins used are hardcoded in supplementary code - it is really hot off the press!
Attempt to compile (it will fail)
Then add the lvgl component to your project.
cd to the project folder (if you used the same name as me it need be something like cd c:\lvgl_esp32_3) in a command prompt (or use explorer and right click open in terminal)
framwork dir/export (See above

idf.py add-dependency "lvgl/lvgl^9.1.0"
idf.py fullclean
idf.py build
You should notice it add the lvgl component as a directory
Now you need to move (rename) the managed component directory to components
Use: mv managed_components components (Note that this allows us to modify lvgl without causing issues)
Copy lv_conf_template.h (from components lvgl__lvgl) to components/lv_conf.h
idf.py menuconfig
in components (at the end of) - there is a lvgl component - remove the ignore lv_conf header
At the start change #ifdef 0 to #ifdef 1
I changed the #defines to use FREERTOS and ST7789 and removed option to compile demos (or use this...
)
There is a lot of options in here - enjoy
Then - the key part

In lvgl_esp32_3\components\lvgl__lvgl\src\drivers\display\lcd edit lv_lcd_generic_mipi.c
Change all 3 calls to lv_delay(time in ms); to vTaskDelay(time / portTICK_PERIOD_MS);
Note that if we leave lvgl as a managed componnent - at some point it will complain about modified files)
Phew - nearly there. Now just add "lvgl__lvgl" to CMakeLists.txt (in main)
Do a idf.py fullclean
idf.py build (or build from FC)
idf.py -p COMn -b 921600 flash
Hopefully you now have a simple display ! (as mentioned check supplementary code - I have 23 to DIN, 22 to CLK, 21 -RST, 16 -BL, 18 DC)
These should all be changed to #defines (and possibly properties)
Other areas of struggle - Using a large buffer didn't work (gave a buffer too small error). lvgl can double buffer the display.
Drawing - I got 'data transfer size too large' so I split into 1000 (or less) byte lumps - but there might be a better way to do this.
I busy wait on drawing - but lvgl can do more and transfers run in the background (left as an exercise (for Ben?))
There are many features - png /jpg decode for example. I intend to play some more....
Anyone trying this - please ask questions - it is finally working today - and in my enthusiasm to share some of the steps might not be clear?
Martin