Die Messung aus 1.8.8 hat es gezeigt: Jeder Bildaufbau kostete 240-300 ms, dauerhaft, auch im Leerlauf. Die fünf Sekunden für den Aufweckdialog waren rund zwanzig solcher Durchgänge - meine bisherigen Erklärungen (Fades, Scrims) waren Symptome, nicht die Ursache.
Grund: zwei Durchgänge durch je 2,7 MB PSRAM pro Bild. LVGL rendert in einen eigenen Draw-Buffer, esp_lcd_panel_draw_bitmap kopiert ihn danach komplett in den Framebuffer.
WS7_DIRECT_FB holt den Framebuffer über esp_lcd_dpi_panel_get_frame_buffer und übergibt ihn als LVGL-Draw-Buffer. Der IDF-Treiber erkennt das (draw_buffer im Framebuffer-Bereich) und macht nur noch Cache-Writeback statt Kopie; dazu LV_DISPLAY_RENDER_MODE_DIRECT, sodass nur geänderte Bereiche neu gezeichnet werden.
Außerdem:
Shot-Timer und Waage behalten während eines Bezugs die normale Schrift; der Wechsel auf den fetten 96er ist entfernt.
Größe der Standby-Uhr einstellbar (120/180/240 px, Info-Seite, NVS ui/uhrgr). Wirkt sofort - sie hängt an einem einzigen Label.
Die Knöpfe des Aufweckdialogs skalieren mit der Schriftgröße.
Beide Panel-Varianten mit arduino-cli gegengebaut.
Die Messung aus 1.8.8 hat es gezeigt: **Jeder Bildaufbau kostete 240-300 ms**, dauerhaft, auch im Leerlauf. Die fünf Sekunden für den Aufweckdialog waren rund zwanzig solcher Durchgänge - meine bisherigen Erklärungen (Fades, Scrims) waren Symptome, nicht die Ursache.
Grund: zwei Durchgänge durch je 2,7 MB PSRAM pro Bild. LVGL rendert in einen eigenen Draw-Buffer, `esp_lcd_panel_draw_bitmap` kopiert ihn danach komplett in den Framebuffer.
`WS7_DIRECT_FB` holt den Framebuffer über `esp_lcd_dpi_panel_get_frame_buffer` und übergibt ihn als LVGL-Draw-Buffer. Der IDF-Treiber erkennt das (`draw_buffer` im Framebuffer-Bereich) und macht nur noch Cache-Writeback statt Kopie; dazu `LV_DISPLAY_RENDER_MODE_DIRECT`, sodass nur geänderte Bereiche neu gezeichnet werden.
**Außerdem:**
- Shot-Timer und Waage behalten während eines Bezugs die normale Schrift; der Wechsel auf den fetten 96er ist entfernt.
- Größe der Standby-Uhr einstellbar (120/180/240 px, Info-Seite, NVS `ui/uhrgr`). Wirkt sofort - sie hängt an einem einzigen Label.
- Die Knöpfe des Aufweckdialogs skalieren mit der Schriftgröße.
Beide Panel-Varianten mit arduino-cli gegengebaut.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Die Messung aus 1.8.8 hat es gezeigt: Jeder Bildaufbau kostete 240-300 ms,
dauerhaft, auch im Leerlauf. Die fünf Sekunden für den Aufweckdialog waren
rund zwanzig solcher Durchgänge - meine bisherigen Erklärungen (Fades,
Scrims) waren Symptome, nicht die Ursache.
Grund: zwei Durchgänge durch je 2,7 MB PSRAM pro Bild. LVGL rendert in einen
eigenen Draw-Buffer, esp_lcd_panel_draw_bitmap kopiert ihn danach komplett
in den Framebuffer.
WS7_DIRECT_FB holt den Framebuffer über esp_lcd_dpi_panel_get_frame_buffer
und übergibt ihn als LVGL-Draw-Buffer. Der IDF-Treiber erkennt das
(draw_buffer im Framebuffer-Bereich) und macht nur noch Cache-Writeback statt
Kopie; dazu LV_DISPLAY_RENDER_MODE_DIRECT, sodass nur geänderte Bereiche neu
gezeichnet werden.
Außerdem:
- Shot-Timer und Waage behalten während eines Bezugs die normale Schrift;
der Wechsel auf den fetten 96er ist entfernt.
- Größe der Standby-Uhr einstellbar (120/180/240 px, Info-Seite,
NVS ui/uhrgr). Wirkt sofort - sie hängt an einem einzigen Label.
- Die Knöpfe des Aufweckdialogs skalieren mit der Schriftgröße.
Beide Panel-Varianten mit arduino-cli gegengebaut.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
thomas
merged commit 09b5231357 into main2026-09-03 01:27:33 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Die Messung aus 1.8.8 hat es gezeigt: Jeder Bildaufbau kostete 240-300 ms, dauerhaft, auch im Leerlauf. Die fünf Sekunden für den Aufweckdialog waren rund zwanzig solcher Durchgänge - meine bisherigen Erklärungen (Fades, Scrims) waren Symptome, nicht die Ursache.
Grund: zwei Durchgänge durch je 2,7 MB PSRAM pro Bild. LVGL rendert in einen eigenen Draw-Buffer,
esp_lcd_panel_draw_bitmapkopiert ihn danach komplett in den Framebuffer.WS7_DIRECT_FBholt den Framebuffer überesp_lcd_dpi_panel_get_frame_bufferund übergibt ihn als LVGL-Draw-Buffer. Der IDF-Treiber erkennt das (draw_bufferim Framebuffer-Bereich) und macht nur noch Cache-Writeback statt Kopie; dazuLV_DISPLAY_RENDER_MODE_DIRECT, sodass nur geänderte Bereiche neu gezeichnet werden.Außerdem:
ui/uhrgr). Wirkt sofort - sie hängt an einem einzigen Label.Beide Panel-Varianten mit arduino-cli gegengebaut.
🤖 Generated with Claude Code