Skip to content

Conversation

@liamHowatt
Copy link
Member

Fixes #8811

Notes

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

No issues found across 1 file

@github-actions
Copy link
Contributor

github-actions bot commented Sep 28, 2025

Hi 👋, thank you for your PR!

We've run benchmarks in an emulated environment. Here are the results:

ARM Emulated 32b - lv_conf_perf32b

Scene Name Avg CPU (%) Avg FPS Avg Time (ms) Render Time (ms) Flush Time (ms)
All scenes avg. 28 38 7 7 0
Detailed Results Per Scene
Scene Name Avg CPU (%) Avg FPS Avg Time (ms) Render Time (ms) Flush Time (ms)
Empty screen 11 33 0 0 0
Moving wallpaper 2 33 1 1 0
Single rectangle 0 50 0 0 0
Multiple rectangles 0 42 (+7) 0 0 0
Multiple RGB images 0 39 0 0 0
Multiple ARGB images 8 42 (-1) 0 0 0
Rotated ARGB images 54 (-1) 43 (-1) 15 15 0
Multiple labels 2 (-3) 35 0 0 0
Screen sized text 92 (-6) 47 20 20 0
Multiple arcs 31 (+2) 33 7 7 0
Containers 0 (-3) 37 (-1) 0 0 0
Containers with overlay 99 (-1) 21 44 44 0
Containers with opa 17 36 (-1) 1 1 0
Containers with opa_layer 18 33 6 6 0
Containers with scrolling 46 47 12 12 0
Widgets demo 68 40 16 16 0
All scenes avg. 28 38 7 7 0

ARM Emulated 64b - lv_conf_perf64b

Scene Name Avg CPU (%) Avg FPS Avg Time (ms) Render Time (ms) Flush Time (ms)
All scenes avg. 23 38 6 6 0
Detailed Results Per Scene
Scene Name Avg CPU (%) Avg FPS Avg Time (ms) Render Time (ms) Flush Time (ms)
Empty screen 11 33 0 0 0
Moving wallpaper 1 33 0 0 0
Single rectangle 0 50 (+1) 0 0 0
Multiple rectangles 0 45 0 0 0
Multiple RGB images 0 38 0 0 0
Multiple ARGB images 1 36 0 0 0
Rotated ARGB images 30 33 9 9 0
Multiple labels 2 45 (+1) 0 0 0
Screen sized text 76 45 17 17 0
Multiple arcs 29 33 6 (-1) 6 (-1) 0
Containers 1 37 0 0 0
Containers with overlay 97 (+1) 23 41 41 0
Containers with opa 16 (+8) 38 0 0 0
Containers with opa_layer 7 38 1 1 0
Containers with scrolling 46 47 11 11 0
Widgets demo 66 (+1) 42 15 15 0
All scenes avg. 23 38 6 6 0

Disclaimer: These benchmarks were run in an emulated environment using QEMU with instruction counting mode.
The timing values represent relative performance metrics within this specific virtualized setup and should
not be interpreted as absolute real-world performance measurements. Values are deterministic and useful for
comparing different LVGL features and configurations, but may not correlate directly with performance on
physical hardware. The measurements are intended for comparative analysis only.


🤖 This comment was automatically generated by a bot.

@liamHowatt
Copy link
Member Author

I just found another one with a little help from the JSON API generator. Maybe we should make a CI for it.

import json

with open("header.json") as f:
    j = json.load(f)

enum_required_bit_widths = {
    enum["name"]: (len(enum["members"]) - 1).bit_length() + 1
    for enum in j["enums"]
}

for struct in j["structures"]:
    for field in struct["fields"]:

        field_bitsize = field["bitsize"]

        # is this field a bitfield?
        if field_bitsize is None:
            continue

        field_bitsize = int(field_bitsize)

        field_type = field["type"]
        field_type_name = field_type["name"]

        # is this field an enum?
        if field_type_name not in enum_required_bit_widths:
            continue

        needed_bitsize = enum_required_bit_widths[field_type_name]

        msg = f"{struct['name']}::{field['name']} has {field_bitsize}, needs {needed_bitsize}"

        if field_bitsize < needed_bitsize:
            print(f"{msg}     <- bad size")
        else:
            print(msg)
lv_grad_dsc_t::dir has 4, needs 4
lv_grad_dsc_t::extend has 3, needs 3
lv_draw_rect_dsc_t::border_side has 5, needs 4
lv_draw_border_dsc_t::side has 5, needs 4
lv_draw_label_dsc_t::decor has 3, needs 3
lv_draw_label_dsc_t::flag has 5, needs 4
lv_draw_letter_dsc_t::decor has 3, needs 3
lv_draw_letter_dsc_t::blend_mode has 3, needs 4     <- bad size
_lv_draw_image_dsc_t::blend_mode has 4, needs 4
_lv_bar_t::mode has 3, needs 3
_lv_bar_t::orientation has 3, needs 3
_lv_switch_t::orientation has 3, needs 3
_lv_roller_t::mode has 2, needs 2
_lv_menu_t::mode_header has 3, needs 3
_lv_menu_t::mode_root_back_btn has 1, needs 2     <- bad size
_lv_chart_t::type has 4, needs 4
_lv_chart_t::update_mode has 2, needs 2
_lv_label_t::long_mode has 4, needs 4

@AndreCostaaa
Copy link
Collaborator

Maybe we should make a CI for it.

Agreed!

@kisvegabor kisvegabor merged commit 9e869b3 into lvgl:master Sep 29, 2025
40 of 41 checks passed
FishOfTheNorthStar pushed a commit to FishOfTheNorthStar/lvgl_pr_patch_func that referenced this pull request Oct 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

lv_menu: Root back button not visible

3 participants