Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(esp_lvgl_port): Add support for LVGL 9.2 and above #505

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

tore-espressif
Copy link
Collaborator

@tore-espressif tore-espressif commented Feb 10, 2025

ESP-BSP Pull Request checklist

Note: For new BSPs create a PR with this link.

  • Update benchmark project to use SIMD!
  • CI passing

Change description

LVGL has changed their blending API here lvgl/lvgl#6688 , now it seems that it is considered private.
Moving forward, we plan to move the blending code to LVGL repo

@tore-espressif tore-espressif added this to the esp_lvgl_port 2.5.0 milestone Feb 10, 2025
Copy link

github-actions bot commented Feb 10, 2025

Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 8c8f584.

♻️ This comment has been updated with latest results.

Copy link
Collaborator

@peter-marcisovsky peter-marcisovsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can confirm that on this branch, the SIMD source code present in esp-bsp compiles successfully on LVGL >= 9.1.x

This solution solves both problems with SIMD src code support on LVGL 9.1.x and LVGL 9.2.x

  1. changing structure names (_lv_draw_sw_blend_fill_dsc_t vs lv_draw_sw_blend_fill_dsc_t)

  2. LV_DRAW_SW_ASM_CUSTOM_INCLUDE (Macro which we use to include our header file esp_lvgl_port_lv_blend.h with assembly function prototypes) being present in multiple places around LVGL (lv_draw_sw.c for example) and this .c file is missing include of lv_draw_sw_blend_private.h, causing compilation to fail

@tore-espressif tore-espressif force-pushed the feat/simd_v9 branch 2 times, most recently from 47c9b32 to d8c1705 Compare February 14, 2025 07:40
@tore-espressif tore-espressif marked this pull request as ready for review February 14, 2025 07:42
@tore-espressif
Copy link
Collaborator Author

@espzav PTAL :)

@tore-espressif tore-espressif force-pushed the feat/simd_v9 branch 3 times, most recently from 6ffaa8e to 7e9537e Compare February 24, 2025 10:14
Copy link

github-actions bot commented Feb 24, 2025

No description provided.

@kisvegabor
Copy link

cc @uLipe

Looks great and very interesting! Two questions:

  1. The benchmark was committed by @GitHub-Action. Do you run the benchmark with CI somehow?
  2. What does the subscript numbers (e.g. (+17)) mean?

@espzav
Copy link
Collaborator

espzav commented Feb 25, 2025

cc @uLipe

Looks great and very interesting! Two questions:

  1. The benchmark was committed by @GitHub-Action. Do you run the benchmark with CI somehow?
  2. What does the subscript numbers (e.g. (+17)) mean?

Hi @kisvegabor,

  1. We have a runner for all boards (called BSP Wall Runner). It is for testing and we can run the benchmark example there (when PR is labeled - Run benchmark). Here is pytest for it: https://github.com/espressif/esp-bsp/blob/master/examples/display_lvgl_benchmark/pytest_display_lvgl_benchmark.py
  2. The numbers are difference between master. In every push to master is benchmark run again and saved latest values to releases (https://github.com/espressif/esp-bsp/releases/tag/benchmark-latest). Each PR can compare the benchmark values with master.

@kisvegabor
Copy link

kisvegabor commented Feb 25, 2025

We have a runner for all boards (called BSP Wall Runner).

Wao, it's really impressive. Can you share a photo of it publicly?

The numbers are difference between master.

I see! It looks pretty good then for P4
image

I believe the "Rotated ARGB images" scene is this slow because it completely messes up the cache due to the "random" access of pixel in the original image. I haven't tested it, but moving the image to the internal RAM should make a huge difference.

However I don't know why the widgets demo is this slow. Only 16 FPS. Do you use LV_OS_FREERTOS LV_DRAW_SW_DRAW_UNIT_CNT 1 or 2? If not can you give it shot with these settings as well?

@espzav
Copy link
Collaborator

espzav commented Feb 26, 2025

Wao, it's really impressive. Can you share a photo of it publicly?

Here is the photo
IMG_1173

@tore-espressif tore-espressif force-pushed the feat/simd_v9 branch 2 times, most recently from cc78fa9 to 1db286a Compare February 27, 2025 09:16
@tore-espressif tore-espressif removed this from the esp_lvgl_port 2.5.0 milestone Feb 27, 2025
@kisvegabor
Copy link

This is really fantastic! We should have something similar for at least a few vendors and boards.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants