perf(P4): Darstellung am Waveshare-Panel beschleunigen (1.6.4) #32

Merged
thomas merged 1 commits from perf/waveshare-darstellung-beschleunigen into main 2026-09-01 12:52:55 +02:00
Owner

1280x720 sind 2,4-mal so viele Pixel wie beim 4,3-Zöller, und bis 1.6.3 wurde bei jeder Änderung das komplette Bild in 24 Bit neu gezeichnet. Drei Schalter in pins_config.h, einzeln zurückstellbar:

  • WS7_COLOR_BITS = 16: RGB565 statt RGB888, halbe Datenmenge je Bild. lv_conf.h liest den Wert aus pins_config.h, damit Sketch und LVGL-Bibliothek dieselbe Farbtiefe benutzen; per static_assert abgesichert.
  • WS7_PARTIAL_REFRESH = 1: Avoid-Tear-Mode 3 (Direct-Mode, zwei Puffer) statt Vollbild-Neuzeichnen.
  • WS7_PARALLEL_RENDER = 1: LV_USE_OS = FREERTOS und zwei Zeichen-Threads auf beiden Kernen.

Framebuffer-Bedarf sinkt von rund 8,3 MB auf 3,7 MB PSRAM. Die JC-Panels sind nicht betroffen. Mit arduino-cli übersetzt; die wirksamen Werte wurden zusätzlich im Präprozessorlauf der LVGL-Bibliothek gegengeprüft.

Die README nennt zu jedem Schalter, woran man erkennt, dass er zurückgestellt werden muss.

1280x720 sind 2,4-mal so viele Pixel wie beim 4,3-Zöller, und bis 1.6.3 wurde bei jeder Änderung das komplette Bild in 24 Bit neu gezeichnet. Drei Schalter in `pins_config.h`, einzeln zurückstellbar: - `WS7_COLOR_BITS = 16`: RGB565 statt RGB888, halbe Datenmenge je Bild. `lv_conf.h` liest den Wert aus `pins_config.h`, damit Sketch und LVGL-Bibliothek dieselbe Farbtiefe benutzen; per `static_assert` abgesichert. - `WS7_PARTIAL_REFRESH = 1`: Avoid-Tear-Mode 3 (Direct-Mode, zwei Puffer) statt Vollbild-Neuzeichnen. - `WS7_PARALLEL_RENDER = 1`: `LV_USE_OS = FREERTOS` und zwei Zeichen-Threads auf beiden Kernen. Framebuffer-Bedarf sinkt von rund 8,3 MB auf 3,7 MB PSRAM. Die JC-Panels sind nicht betroffen. Mit arduino-cli übersetzt; die wirksamen Werte wurden zusätzlich im Präprozessorlauf der LVGL-Bibliothek gegengeprüft. Die README nennt zu jedem Schalter, woran man erkennt, dass er zurückgestellt werden muss.
thomas added 1 commit 2026-09-01 12:52:54 +02:00
1280x720 sind 2,4-mal so viele Pixel wie beim 4,3-Zöller, und bis 1.6.3 wurde
bei jeder Änderung das komplette Bild in 24 Bit neu gezeichnet. Drei Schalter
in pins_config.h, einzeln zurückstellbar:

- WS7_COLOR_BITS = 16: RGB565 statt RGB888, halbe Datenmenge je Bild.
  lv_conf.h liest den Wert aus pins_config.h, damit Sketch und LVGL-Bibliothek
  dieselbe Farbtiefe benutzen; display_hal.cpp sichert das per static_assert.
- WS7_PARTIAL_REFRESH = 1: Avoid-Tear-Mode 3 (Direct-Mode, zwei Puffer) statt
  Vollbild-Neuzeichnen.
- WS7_PARALLEL_RENDER = 1: LV_USE_OS = FREERTOS und zwei Zeichen-Threads.

Framebuffer-Bedarf sinkt dadurch von rund 8,3 MB auf 3,7 MB PSRAM. Die
JC-Panels sind von allen drei Schaltern nicht betroffen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018QoLDQeUh1dCQz7yYZVb4Y
thomas merged commit 8b7978507c into main 2026-09-01 12:52:55 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: thomas/Dual-PID#32