From eccfb58aa64849f04034c934193e8272b21ad79d Mon Sep 17 00:00:00 2001 From: Vilem Zavodny Date: Fri, 17 Jan 2025 15:05:36 +0100 Subject: [PATCH 1/3] ci(runner): Add benchmark example and print benchmark results. --- .github/workflows/build-run-applications.yml | 6 ++ .../display_lvgl_benchmark/CMakeLists.txt | 10 +++ examples/display_lvgl_benchmark/README.md | 17 +++++ .../main/CMakeLists.txt | 17 +++++ .../main/idf_component.yml | 5 ++ examples/display_lvgl_benchmark/main/main.c | 39 +++++++++++ .../display_lvgl_benchmark/partitions.csv | 5 ++ .../pytest_display_lvgl_benchmark.py | 64 +++++++++++++++++++ .../sdkconfig.bsp.esp-box | 43 +++++++++++++ .../sdkconfig.bsp.esp-box-3 | 44 +++++++++++++ .../sdkconfig.bsp.esp-box-lite | 43 +++++++++++++ .../sdkconfig.bsp.esp32_p4_function_ev_board | 51 +++++++++++++++ .../sdkconfig.bsp.esp32_s2_kaluga_kit | 46 +++++++++++++ .../sdkconfig.bsp.esp32_s3_eye | 44 +++++++++++++ .../sdkconfig.bsp.esp32_s3_korvo_2 | 44 +++++++++++++ .../sdkconfig.bsp.esp32_s3_lcd_ev_board | 51 +++++++++++++++ .../sdkconfig.bsp.m5dial | 39 +++++++++++ .../sdkconfig.bsp.m5stack_core_s3 | 44 +++++++++++++ .../display_lvgl_benchmark/sdkconfig.defaults | 51 +++++++++++++++ 19 files changed, 663 insertions(+) create mode 100644 examples/display_lvgl_benchmark/CMakeLists.txt create mode 100644 examples/display_lvgl_benchmark/README.md create mode 100644 examples/display_lvgl_benchmark/main/CMakeLists.txt create mode 100644 examples/display_lvgl_benchmark/main/idf_component.yml create mode 100644 examples/display_lvgl_benchmark/main/main.c create mode 100644 examples/display_lvgl_benchmark/partitions.csv create mode 100644 examples/display_lvgl_benchmark/pytest_display_lvgl_benchmark.py create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-3 create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-lite create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_p4_function_ev_board create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s2_kaluga_kit create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_eye create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_korvo_2 create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_lcd_ev_board create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.m5dial create mode 100644 examples/display_lvgl_benchmark/sdkconfig.bsp.m5stack_core_s3 create mode 100644 examples/display_lvgl_benchmark/sdkconfig.defaults diff --git a/.github/workflows/build-run-applications.yml b/.github/workflows/build-run-applications.yml index 1a1d17ae..332f823e 100644 --- a/.github/workflows/build-run-applications.yml +++ b/.github/workflows/build-run-applications.yml @@ -169,6 +169,9 @@ jobs: with: name: ${{ env.TEST_RESULT_NAME }} path: ${{ env.TEST_RESULT_FILE }} + with: + pattern: benchmark_*.md + path: benchmark publish-results: name: Publish Test results @@ -182,6 +185,9 @@ jobs: with: pattern: test_results_* path: test_results + with: + pattern: benchmark_*.md + path: benchmark - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 with: diff --git a/examples/display_lvgl_benchmark/CMakeLists.txt b/examples/display_lvgl_benchmark/CMakeLists.txt new file mode 100644 index 00000000..409327c5 --- /dev/null +++ b/examples/display_lvgl_benchmark/CMakeLists.txt @@ -0,0 +1,10 @@ +# For more information about build system see +# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html +# The following five lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +set(COMPONENTS main) # "Trim" the build. Include the minimal set of components; main and anything it depends on. +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +add_compile_options("-Wno-attributes") # For LVGL code +project(display_lvgl_benchmark) diff --git a/examples/display_lvgl_benchmark/README.md b/examples/display_lvgl_benchmark/README.md new file mode 100644 index 00000000..e2a65e42 --- /dev/null +++ b/examples/display_lvgl_benchmark/README.md @@ -0,0 +1,17 @@ +# Display LVGL Benchmark + +This example shows LVGL internal benchmark demo. + +## How to use the example + +### Hardware Required + +* ESP32-S3-LCD-EV-Board or ESP32-S3-LCD-EV-Board-2 +* USB-C Cable + +### Compile and flash + +``` +idf.py -p COMx build flash monitor +``` + diff --git a/examples/display_lvgl_benchmark/main/CMakeLists.txt b/examples/display_lvgl_benchmark/main/CMakeLists.txt new file mode 100644 index 00000000..fc2d0613 --- /dev/null +++ b/examples/display_lvgl_benchmark/main/CMakeLists.txt @@ -0,0 +1,17 @@ +set(LV_DEMO_DIR "") +set(LV_DEMOS_SOURCES "") +if(CONFIG_LV_USE_DEMO_BENCHMARK) + list(APPEND LV_DEMO_DIR ../managed_components/lvgl__lvgl/demos) + file(GLOB_RECURSE LV_DEMOS_SOURCES ${LV_DEMO_DIR}/*.c) +endif() + +idf_component_register( + SRCS "main.c" ${LV_DEMOS_SOURCES} + INCLUDE_DIRS "." ${LV_DEMO_DIR}) + +if(CONFIG_LV_USE_DEMO_BENCHMARK) +set_source_files_properties( + ${LV_DEMOS_SOURCES} + PROPERTIES COMPILE_OPTIONS + -DLV_LVGL_H_INCLUDE_SIMPLE) +endif() diff --git a/examples/display_lvgl_benchmark/main/idf_component.yml b/examples/display_lvgl_benchmark/main/idf_component.yml new file mode 100644 index 00000000..0f42ce28 --- /dev/null +++ b/examples/display_lvgl_benchmark/main/idf_component.yml @@ -0,0 +1,5 @@ +description: BSP Display rotation example +dependencies: + esp32_p4_function_ev_board: + version: '*' + override_path: ../../../bsp/esp32_p4_function_ev_board diff --git a/examples/display_lvgl_benchmark/main/main.c b/examples/display_lvgl_benchmark/main/main.c new file mode 100644 index 00000000..ae03bad5 --- /dev/null +++ b/examples/display_lvgl_benchmark/main/main.c @@ -0,0 +1,39 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_log.h" + +#include "lv_demos.h" +#include "bsp/esp-bsp.h" + +static char *TAG = "app_main"; + +#define LOG_MEM_INFO (0) + +void app_main(void) +{ + /* Initialize display and LVGL */ + bsp_display_start(); + +#if CONFIG_BSP_DISPLAY_LVGL_AVOID_TEAR + ESP_LOGI(TAG, "Avoid lcd tearing effect"); +#if CONFIG_BSP_DISPLAY_LVGL_FULL_REFRESH + ESP_LOGI(TAG, "LVGL full-refresh"); +#elif CONFIG_BSP_DISPLAY_LVGL_DIRECT_MODE + ESP_LOGI(TAG, "LVGL direct-mode"); +#endif +#endif + + /* Set display brightness to 100% */ + bsp_display_backlight_on(); + + ESP_LOGI(TAG, "Display LVGL demo"); + bsp_display_lock(0); + lv_demo_benchmark(); /* A demo to measure the performance of LVGL or to compare different settings. */ + bsp_display_unlock(); +} diff --git a/examples/display_lvgl_benchmark/partitions.csv b/examples/display_lvgl_benchmark/partitions.csv new file mode 100644 index 00000000..3cc176cf --- /dev/null +++ b/examples/display_lvgl_benchmark/partitions.csv @@ -0,0 +1,5 @@ +# Name, Type, SubType, Offset, Size, Flags +# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild +nvs, data, nvs, 0x9000, 0x6000, +phy_init, data, phy, 0xf000, 0x1000, +factory, app, factory, 0x10000, 0x160000, diff --git a/examples/display_lvgl_benchmark/pytest_display_lvgl_benchmark.py b/examples/display_lvgl_benchmark/pytest_display_lvgl_benchmark.py new file mode 100644 index 00000000..19ef1b44 --- /dev/null +++ b/examples/display_lvgl_benchmark/pytest_display_lvgl_benchmark.py @@ -0,0 +1,64 @@ +# SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: CC0-1.0 + +import os +import datetime +import pytest +from pytest_embedded import Dut + + +def write_to_file(board, text): + with open("benchmark_" + board + ".md", "a") as h: + h.write(text) + + +@pytest.mark.esp_box_3 +@pytest.mark.esp32_p4_function_ev_board +@pytest.mark.esp32_c3_lcdkit +@pytest.mark.esp32_s3_eye +@pytest.mark.esp32_s3_lcd_ev_board +@pytest.mark.esp32_s3_lcd_ev_board_2 +@pytest.mark.esp32_s3_usb_otg +@pytest.mark.esp_wrover_kit +@pytest.mark.m5dial +@pytest.mark.m5stack_core +@pytest.mark.m5stack_core_2 +@pytest.mark.m5stack_core_s3 +@pytest.mark.m5stack_core_s3_se +def test_example(dut: Dut, request) -> None: + date = datetime.datetime.now() + board = request.node.callspec.id + + # Wait for start benchmark + dut.expect_exact('app_main: Display LVGL demo') + dut.expect_exact('main_task: Returned from app_main()') + + try: + os.remove("benchmark_" + board + ".md") + except OSError: + pass + + # Write board into file + write_to_file(board, f"# Benchmark for BOARD " + board + "\n\n") + write_to_file(board, f"**DATE:** " + date.strftime('%d.%m.%Y %H:%M') + "\n\n") + # Get LVGL version write it into file + outdata = dut.expect(r'Benchmark Summary \((.*) \)', timeout=200) + write_to_file(board, f"**LVGL version:** " + outdata[1].decode() + "\n\n") + outdata = dut.expect(r'Name, Avg. CPU, Avg. FPS, Avg. time, render time, flush time', timeout=200) + write_to_file(board, f"| Name | Avg. CPU | Avg. FPS | Avg. time | render time | flush time |\n") + write_to_file(board, f"| ---- | :------: | :------: | :-------: | :---------: | :--------: |\n") + + # Benchmark lines + for x in range(17): + outdata = dut.expect(r'([\w \.]+),[ ]?(\d+%),[ ]?(\d+),[ ]?(\d+),[ ]?(\d+),[ ]?(\d+)', timeout=200) + write_to_file(board, f"| " + + outdata[1].decode() + " | " + + outdata[2].decode() + " | " + + outdata[3].decode() + " | " + + outdata[4].decode() + " | " + + outdata[5].decode() + " | " + + outdata[6].decode() + " |\n") + + write_to_file(board, "\n") + write_to_file(board, "***") + write_to_file(board, "\n\n") diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box new file mode 100644 index 00000000..f3787a0c --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box @@ -0,0 +1,43 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-3 b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-3 new file mode 100644 index 00000000..7f5fadfa --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-3 @@ -0,0 +1,44 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-lite b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-lite new file mode 100644 index 00000000..f3787a0c --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp-box-lite @@ -0,0 +1,43 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_p4_function_ev_board b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_p4_function_ev_board new file mode 100644 index 00000000..48385ad1 --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_p4_function_ev_board @@ -0,0 +1,51 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32p4" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_BSP_LCD_RGB_BUFFER_NUMS=2 +CONFIG_BSP_LCD_RGB_BOUNCE_BUFFER_MODE=y +CONFIG_BSP_DISPLAY_LVGL_AVOID_TEAR=y +CONFIG_BSP_DISPLAY_LVGL_DIRECT_MODE=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_FONT_MONTSERRAT_24=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_DISP_DEF_REFR_PERIOD=10 + +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_HEX=y +CONFIG_SPIRAM_SPEED_200M=y +CONFIG_IDF_EXPERIMENTAL_FEATURES=y + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_USE_PERF_MONITOR=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s2_kaluga_kit b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s2_kaluga_kit new file mode 100644 index 00000000..63467926 --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s2_kaluga_kit @@ -0,0 +1,46 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s2" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_LV_DEMO_MUSIC_AUTO_PLAY=y + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y + +CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n +CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_eye b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_eye new file mode 100644 index 00000000..7f5fadfa --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_eye @@ -0,0 +1,44 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_korvo_2 b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_korvo_2 new file mode 100644 index 00000000..7f5fadfa --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_korvo_2 @@ -0,0 +1,44 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_lcd_ev_board b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_lcd_ev_board new file mode 100644 index 00000000..6bf9e3dd --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.esp32_s3_lcd_ev_board @@ -0,0 +1,51 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_BSP_LCD_RGB_BUFFER_NUMS=2 +CONFIG_BSP_LCD_RGB_BOUNCE_BUFFER_MODE=y +CONFIG_BSP_DISPLAY_LVGL_AVOID_TEAR=y +CONFIG_BSP_DISPLAY_LVGL_DIRECT_MODE=y +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_FONT_MONTSERRAT_24=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y + + diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.m5dial b/examples/display_lvgl_benchmark/sdkconfig.bsp.m5dial new file mode 100644 index 00000000..3d3258fd --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.m5dial @@ -0,0 +1,39 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_SPIRAM=n + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.bsp.m5stack_core_s3 b/examples/display_lvgl_benchmark/sdkconfig.bsp.m5stack_core_s3 new file mode 100644 index 00000000..bfba7f59 --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.bsp.m5stack_core_s3 @@ -0,0 +1,44 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_QUAD=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_CODEC_I2C_BACKWARD_COMPATIBLE=n + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_benchmark/sdkconfig.defaults b/examples/display_lvgl_benchmark/sdkconfig.defaults new file mode 100644 index 00000000..48385ad1 --- /dev/null +++ b/examples/display_lvgl_benchmark/sdkconfig.defaults @@ -0,0 +1,51 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32p4" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y +CONFIG_SPIRAM_RODATA=y +CONFIG_SPIRAM_SPEED_80M=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_BSP_LCD_RGB_BUFFER_NUMS=2 +CONFIG_BSP_LCD_RGB_BOUNCE_BUFFER_MODE=y +CONFIG_BSP_DISPLAY_LVGL_AVOID_TEAR=y +CONFIG_BSP_DISPLAY_LVGL_DIRECT_MODE=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_FONT_MONTSERRAT_24=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_DISP_DEF_REFR_PERIOD=10 + +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MODE_HEX=y +CONFIG_SPIRAM_SPEED_200M=y +CONFIG_IDF_EXPERIMENTAL_FEATURES=y + +# Enable logging +CONFIG_LV_USE_LOG=y +CONFIG_LV_LOG_PRINTF=y + +## LVGL8 ## +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_USE_PERF_MONITOR=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y From 770c61a9c6fc2e5485a3226fc42ed29727a1ceb4 Mon Sep 17 00:00:00 2001 From: Vilem Zavodny Date: Fri, 17 Jan 2025 15:10:52 +0100 Subject: [PATCH 2/3] artifacts --- .github/workflows/build-run-applications.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-run-applications.yml b/.github/workflows/build-run-applications.yml index 332f823e..ca95b187 100644 --- a/.github/workflows/build-run-applications.yml +++ b/.github/workflows/build-run-applications.yml @@ -168,10 +168,9 @@ jobs: if: always() with: name: ${{ env.TEST_RESULT_NAME }} - path: ${{ env.TEST_RESULT_FILE }} - with: - pattern: benchmark_*.md - path: benchmark + path: | + ${{ env.TEST_RESULT_FILE }} + benchmark_*.md publish-results: name: Publish Test results @@ -184,10 +183,9 @@ jobs: uses: actions/download-artifact@v4 with: pattern: test_results_* - path: test_results - with: - pattern: benchmark_*.md - path: benchmark + path: | + test_results + benchmark_*.md - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 with: From fbfc90ab66f422c628bdec3fdffce635a8ea5d87 Mon Sep 17 00:00:00 2001 From: Vilem Zavodny Date: Fri, 17 Jan 2025 15:18:37 +0100 Subject: [PATCH 3/3] disable some builds --- .github/workflows/build-run-applications.yml | 48 ++++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build-run-applications.yml b/.github/workflows/build-run-applications.yml index ca95b187..cce20a88 100644 --- a/.github/workflows/build-run-applications.yml +++ b/.github/workflows/build-run-applications.yml @@ -27,30 +27,30 @@ jobs: - idf_ver: "latest" parallel_count: 5 parallel_index: 5 - - idf_ver: "release-v5.1" - parallel_count: 2 - parallel_index: 1 - - idf_ver: "release-v5.1" - parallel_count: 2 - parallel_index: 2 - - idf_ver: "release-v5.2" - parallel_count: 2 - parallel_index: 1 - - idf_ver: "release-v5.2" - parallel_count: 2 - parallel_index: 2 - - idf_ver: "release-v5.3" - parallel_count: 2 - parallel_index: 1 - - idf_ver: "release-v5.3" - parallel_count: 2 - parallel_index: 2 - - idf_ver: "release-v5.4" - parallel_count: 2 - parallel_index: 1 - - idf_ver: "release-v5.4" - parallel_count: 2 - parallel_index: 2 + #- idf_ver: "release-v5.1" + # parallel_count: 2 + # parallel_index: 1 + #- idf_ver: "release-v5.1" + # parallel_count: 2 + # parallel_index: 2 + #- idf_ver: "release-v5.2" + # parallel_count: 2 + # parallel_index: 1 + #- idf_ver: "release-v5.2" + # parallel_count: 2 + # parallel_index: 2 + #- idf_ver: "release-v5.3" + # parallel_count: 2 + # parallel_index: 1 + #- idf_ver: "release-v5.3" + # parallel_count: 2 + # parallel_index: 2 + #- idf_ver: "release-v5.4" + # parallel_count: 2 + # parallel_index: 1 + #- idf_ver: "release-v5.4" + # parallel_count: 2 + # parallel_index: 2 runs-on: ubuntu-latest container: espressif/idf:${{ matrix.idf_ver }} steps: