uDisplay fast drawing on RGB displays #21257
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
@gemu2015 I optimized uDisplay's
pushColors()
for RGB displays. The main problem was thatCache_WriteBack_Addr()
was called from the inner loop. Actually you only need to write-back cache once the copy is done viaesp_cache_msync()
.I also isolated RGB display to have more compact code.
The code is inspired from inner loops in https://github.com/espressif/esp-idf/blob/master/components/esp_lcd/rgb/esp_lcd_panel_rgb.c
I will try to adapt the code for DisplayRotate > 0 with optimized loops as well.
Before:
LVG: Refreshed 28800 pixels in 38 ms (757 pix/ms)
Now:
LVG: Refreshed 57600 pixels in 5 ms (11520 pix/ms)
which means that upgrading the full 480x480 screen takes 20msChecklist:
NOTE: The code change must pass CI tests. Your PR cannot be merged unless tests pass