Skip to content

[Bug] ESP32-S3 SIMD Plugin breaks font/masked rendering #213

@pedapudi

Description

@pedapudi

Description

The Esp32S3SimdPlugin currently intercepts LV_BLEND_MODE_NORMAL operations for RGB565 and RGB888 destinations. However, it fails to check if a mask_buf is present. This causes font rendering (which uses alpha masks) to be rendered as solid blocks of color, as the assembly optimized path ignores the mask.

Reproduction

  1. Enable CONFIG_LV_USE_SYSMON or use any text label.
  2. Enable the S3 SIMD plugin.
  3. Observe white/solid blocks instead of text.

Environment

  • ESP-IDF v5.1+
  • LVGL v9.5.0
  • Target: ESP32-S3

Proposed Fix

The assembly blend functions currently don't handle masks. We should fall back to the C implementation when a mask is present.

// In utility/esp32/simd/simd_plugin.cpp
if (asm_dsc.mask_buf == nullptr && lv_color_blend_to_rgb565_esp(&asm_dsc))
    return;

Also, simd_plugin.cpp requires #include "lv_area_private.h" for lv_area_intersect, and the component CMakeLists.txt needs to include the following private LVGL directories to resolve these headers:

  • managed_components/lvgl__lvgl/src/draw/sw/blend
  • managed_components/lvgl__lvgl/src/misc

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions