feat(lvgl+mdns): complete canvas API + fix GB blank render + mDNS browse API

lvgl-module/symbols.c:
- canvas: full LVGL9 docs API (get_buf, get_image, get_px, get_draw_buf,
  set_palette, copy_buf, init_layer, finish_layer, buf_size) – was only 5 symbols
- draw_buf: create/destroy/init/dup/copy/goto/clear/width_to_stride/align/palette/from_image/to_image
- cache: lv_draw_buf_invalidate_cache, flush_cache, lv_image_cache_drop – critical bugfix for
  GameBoy (and any direct framebuffer) where raw buf mutated but image cache stale -> FPS but no image.
- draw layer helpers, image scale/rotation/pivot/offset, transform scales for GB 2x/3x integer scaling

Reason blank screen: lv_canvas in LVGL9 is lv_image backed by draw_buf. Mutating raw pointer
without lv_image_cache_drop + invalidate_cache leaves stale texture. Timer was calling
lv_obj_invalidate only. Now exports needed symbols and app fixed to drop cache each frame.

mDNS (preserve from local WIP, sits on top of 60764979 'kidsOS-XXXX' mdns init):
- Tactility/network/Mdns.h/cpp: C++ browse + resolveHostname wrappers around esp-idf mdns 1.3.2
  (PTR query, txt records, address extraction, POSIX stub)
- TactilityC/tt_mdns.h/cpp: C copy-based API for ELF apps (TT_MDNS_MAX_RESULTS 32,
  capped addresses/txt, hostname->IP resolve)
- TactilityC/tt_init.cpp: export tt_mdns_is_available / browse / resolve_hostname symbols

Test plan:
- firmware build for es3c28p --dev
- release-sdk-current.py
- GameBoy app build against new SDK (0 missing symbols expected)
- push both branches to personal gitea
This commit is contained in:
Adolfo Reyna
2026-07-20 12:32:00 -04:00
parent ff3eeacaf7
commit 75178652e2
6 changed files with 424 additions and 3 deletions
+5 -3
View File
@@ -227,6 +227,10 @@ const struct ModuleSymbol lvgl_module_symbols[] = {
DEFINE_MODULE_SYMBOL(lv_draw_buf_set_palette),
DEFINE_MODULE_SYMBOL(lv_draw_buf_from_image),
DEFINE_MODULE_SYMBOL(lv_draw_buf_to_image),
// LVGL cache invalidation - critical for raw framebuffer apps (GB emulator) where buffer mutated directly
DEFINE_MODULE_SYMBOL(lv_draw_buf_invalidate_cache),
DEFINE_MODULE_SYMBOL(lv_draw_buf_flush_cache),
DEFINE_MODULE_SYMBOL(lv_image_cache_drop),
// lv_draw layer helpers
DEFINE_MODULE_SYMBOL(lv_draw_layer_create),
DEFINE_MODULE_SYMBOL(lv_draw_layer_alloc_buf),
@@ -238,11 +242,9 @@ const struct ModuleSymbol lvgl_module_symbols[] = {
DEFINE_MODULE_SYMBOL(lv_image_set_pivot),
DEFINE_MODULE_SYMBOL(lv_image_set_offset_x),
DEFINE_MODULE_SYMBOL(lv_image_set_offset_y),
// generic obj transform styles (fallback scaling path)
// generic obj transform styles (fallback scaling path) - pivot_x/y already exported above, only add scale
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_scale_x),
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_scale_y),
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_pivot_x),
DEFINE_MODULE_SYMBOL(lv_obj_set_style_transform_pivot_y),
// lv_label
DEFINE_MODULE_SYMBOL(lv_label_create),
DEFINE_MODULE_SYMBOL(lv_label_cut_text),