perf(P4): Darstellung am Waveshare-Panel beschleunigen (1.6.4)
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
This commit is contained in:
co-authored by
Claude Opus 5
parent
ee5888ed97
commit
a8ae034911
@@ -10,6 +10,28 @@
|
||||
// -------------------------------------------------------------------------------------
|
||||
#define WS7_ROTATE_180 0
|
||||
|
||||
// -------------------------------------------------------------------------------------
|
||||
// Waveshare 7" (H): Tempo-Schalter
|
||||
//
|
||||
// 1280x720 ist gegenueber den JC-Panels ein Vielfaches an Pixeln. Die drei Schalter
|
||||
// senken die Last und lassen sich einzeln zurueckstellen, falls einer Aerger macht.
|
||||
//
|
||||
// WS7_COLOR_BITS 16 = RGB565: halbe Datenmenge je Bild, dafuer 65.000 statt
|
||||
// 16,7 Mio. Farben (sichtbar nur in den dunklen Verlaeufen der
|
||||
// Rundanzeige). 24 = RGB888 wie bis 1.6.3.
|
||||
// ACHTUNG: Nimmt die Bridge des Panels kein RGB565 an, bleibt
|
||||
// das Bild falschfarbig oder aus -> wieder auf 24 stellen.
|
||||
// WS7_PARTIAL_REFRESH 1 = nur geaenderte Bildbereiche neu zeichnen statt jedes Mal des
|
||||
// gesamten Bildes. Groesster Tempogewinn. Am 4,3-Zoll-Panel
|
||||
// hatte dieser Modus geflackert; tritt das hier auch auf, auf 0.
|
||||
// WS7_PARALLEL_RENDER 1 = LVGL zeichnet mit zwei Threads auf beiden Prozessorkernen.
|
||||
// Kostet zwei zusaetzliche Task-Stacks im knappen internen RAM;
|
||||
// startet der P4 nicht mehr, hier zuerst auf 0 stellen.
|
||||
// -------------------------------------------------------------------------------------
|
||||
#define WS7_COLOR_BITS 16
|
||||
#define WS7_PARTIAL_REFRESH 1
|
||||
#define WS7_PARALLEL_RENDER 1
|
||||
|
||||
#define EXAMPLE_LVGL_PORT_TASK_MAX_DELAY_MS 500 //range 2 to 2000
|
||||
#define EXAMPLE_LVGL_PORT_TASK_MIN_DELAY_MS 5 //range 1 to 100
|
||||
#define EXAMPLE_LVGL_PORT_TASK_PRIORITY 4
|
||||
@@ -24,7 +46,13 @@
|
||||
// Bild, daher zeigen statische Flaechen (z.B. Tab-Leiste) nie alten Bufferinhalt.
|
||||
// (Mode 3 = Direct-Mode flackert bei nie neu gezeichneten Bereichen.)
|
||||
// Bei Rotation 90 nutzen beide Modi ohnehin 3 Framebuffer -> kein Mehrverbrauch.
|
||||
// Beim Waveshare-Panel waere Vollbild-Neuzeichnen bei 1280x720 zu teuer -> Mode 3
|
||||
// (Direct-Mode, zwei Puffer, nur geaenderte Bereiche), siehe WS7_PARTIAL_REFRESH.
|
||||
#if (JC_PANEL_TYPE == WS_PANEL_7H) && WS7_PARTIAL_REFRESH
|
||||
#define EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE 3 //range 1 to 3
|
||||
#else
|
||||
#define EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE 2 //range 1 to 3
|
||||
#endif
|
||||
|
||||
#if JC_PANEL_TYPE == WS_PANEL_7H
|
||||
// Waveshare 7" (H): Panel ist nativ 1280x720 Querformat. Bei Einbau auf dem Kopf wird um
|
||||
|
||||
Reference in New Issue
Block a user