feat(ppa): make the PPA burst length configurable (#9612)
Arduino Lint / lint (push) Has been cancelled
Build Examples with C++ Compiler / build-examples (push) Has been cancelled
MicroPython CI / Build esp32 port (push) Has been cancelled
MicroPython CI / Build rp2 port (push) Has been cancelled
MicroPython CI / Build stm32 port (push) Has been cancelled
MicroPython CI / Build unix port (push) Has been cancelled
C/C++ CI / Build OPTIONS_16BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_24BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_FULL_32BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_NORMAL_8BIT - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_SDL - Ubuntu (push) Has been cancelled
C/C++ CI / Build OPTIONS_16BIT - cl - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_16BIT - gcc - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_24BIT - cl - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_24BIT - gcc - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_FULL_32BIT - cl - Windows (push) Has been cancelled
C/C++ CI / Build OPTIONS_FULL_32BIT - gcc - Windows (push) Has been cancelled
C/C++ CI / Build ESP IDF ESP32S3 (push) Has been cancelled
C/C++ CI / Run tests with 32bit build (push) Has been cancelled
C/C++ CI / Run tests with 64bit build (push) Has been cancelled
BOM Check / bom-check (push) Has been cancelled
Verify that lv_conf_internal.h matches repository state / verify-conf-internal (push) Has been cancelled
Verify the widget property name / verify-property-name (push) Has been cancelled
Verify code formatting / verify-formatting (push) Has been cancelled
Compare file templates with file names / template-check (push) Has been cancelled
Build docs / build-and-deploy (push) Has been cancelled
Test API JSON generator / Test API JSON (push) Has been cancelled
Install LVGL using CMake / build-examples (push) Has been cancelled
Check Makefile / Build using Makefile (push) Has been cancelled
Check Makefile for UEFI / Build using Makefile for UEFI (push) Has been cancelled
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/benchmark_results_comment/test.sh) (push) Has been cancelled
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/filter_docker_logs/test.sh) (push) Has been cancelled
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/serialize_results/test.sh) (push) Has been cancelled
Emulated Performance Test / ARM Emulated Benchmark 32b - lv_conf_perf32b (push) Has been cancelled
Emulated Performance Test / ARM Emulated Benchmark 64b - lv_conf_perf64b (push) Has been cancelled
Emulated Performance Test / ARM Emulated Benchmark - Save PR Number (push) Has been cancelled
Hardware Performance Test / Hardware Performance Benchmark (push) Has been cancelled
Hardware Performance Test / HW Benchmark - Save PR Number (push) Has been cancelled
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_32B - Ubuntu (push) Has been cancelled
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_64B - Ubuntu (push) Has been cancelled
Port repo release update / run-release-branch-updater (push) Has been cancelled
Verify Font License / verify-font-license (push) Has been cancelled
Verify Kconfig / verify-kconfig (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled

Signed-off-by: Felipe Neves <felipe@lvgl.io>
This commit is contained in:
Felipe Neves
2026-01-28 13:44:01 -03:00
committed by GitHub
parent 0253096008
commit f82604392f
5 changed files with 44 additions and 5 deletions
+7
View File
@@ -556,6 +556,13 @@ menu "LVGL configuration"
default n
depends on LV_USE_PPA
config LV_PPA_BURST_LENGTH
int "PPA Burst length in bytes"
depends on LV_USE_PPA
default 128
help
PPA burst length size in bytes.
config LV_USE_DRAW_EVE
bool "Use EVE FT81X GPU."
default n
@@ -107,7 +107,21 @@ To fix that behavior just add to the `sdkconfig.defaults` the following option:
.. code-block:: c
CONFIG_SPIRAM_SPEED_200M=y
CONFIG_SPIRAM_SPEED_200M=y
Additionally it is possible to set the PPA burst length in order to increase
the memory bandwidth of a particular channel to get speed improvement of the
drawing operations, using the option:
.. code-block:: c
CONFIG_LV_PPA_BURST_LENGTH=128
There is a downside of increasing the burst length, if another piece of code from
ESP-IDF is using a DMA2D channel which is shared to PPA, this increase may cause
slow-down on that channel consumer. Also mind the burst length value supported
are the following: 128, 64, 32, 16, and 8 bytes, other values set will result
in a build error.
Enabling LVGL logs on IDF project
+2 -1
View File
@@ -395,7 +395,8 @@
/** Draw using espressif PPA accelerator */
#define LV_USE_PPA 0
#if LV_USE_PPA
#define LV_USE_PPA_IMG 0
#define LV_USE_PPA_IMG 0
#define LV_PPA_BURST_LENGTH 128
#endif
/* Use EVE FT81X GPU. */
+12 -2
View File
@@ -48,20 +48,30 @@ void lv_draw_ppa_init(void)
/* Register SRM client */
cfg.oper_type = PPA_OPERATION_SRM;
cfg.max_pending_trans_num = 1;
#if (LV_PPA_BURST_LENGTH == 128)
cfg.data_burst_length = PPA_DATA_BURST_LENGTH_128;
#elif (LV_PPA_BURST_LENGTH == 64)
cfg.data_burst_length = PPA_DATA_BURST_LENGTH_64;
#elif (LV_PPA_BURST_LENGTH == 32)
cfg.data_burst_length = PPA_DATA_BURST_LENGTH_32;
#elif (LV_PPA_BURST_LENGTH == 16)
cfg.data_burst_length = PPA_DATA_BURST_LENGTH_16;
#elif (LV_PPA_BURST_LENGTH == 8)
cfg.data_burst_length = PPA_DATA_BURST_LENGTH_8;
#else
#error "Invalid burst length selection for PPA"
#endif
res = ppa_register_client(&cfg, &draw_ppa_unit->srm_client);
LV_ASSERT(res == ESP_OK);
/* Register Fill client */
cfg.oper_type = PPA_OPERATION_FILL;
cfg.data_burst_length = PPA_DATA_BURST_LENGTH_128;
res = ppa_register_client(&cfg, &draw_ppa_unit->fill_client);
LV_ASSERT(res == ESP_OK);
/* Register Blend client */
cfg.oper_type = PPA_OPERATION_BLEND;
cfg.data_burst_length = PPA_DATA_BURST_LENGTH_128;
res = ppa_register_client(&cfg, &draw_ppa_unit->blend_client);
LV_ASSERT(res == ESP_OK);
+8 -1
View File
@@ -1132,7 +1132,14 @@
#ifdef CONFIG_LV_USE_PPA_IMG
#define LV_USE_PPA_IMG CONFIG_LV_USE_PPA_IMG
#else
#define LV_USE_PPA_IMG 0
#define LV_USE_PPA_IMG 0
#endif
#endif
#ifndef LV_PPA_BURST_LENGTH
#ifdef CONFIG_LV_PPA_BURST_LENGTH
#define LV_PPA_BURST_LENGTH CONFIG_LV_PPA_BURST_LENGTH
#else
#define LV_PPA_BURST_LENGTH 128
#endif
#endif
#endif