Commit Graph

153 Commits

Author SHA1 Message Date
Frank Möhle
cce3c0b5d3 psram-aware malloc functions (backport of upstream #4895) (#342)
Introduces new memory allocation functions, based on wled#4895 by @DedeHai

* keep a minimum of 15KB RAM available to UI - improves stability
* S3/S2/C3 automatically use "fast RTC Ram" for small data (reduces fragmentation)
* auto-detects PSRAM (or no PSRAM) when firmware was built with -D BOARD_HAS_PSRAM
* d_malloc() and d_calloc() prefer DRAM if possible (faster), but fall back to PSRAM when free RAM gets low.
2026-02-18 17:57:47 +01:00
Frank
7e2207f384 print hub75 pins to serial at startup 2026-02-15 15:13:38 +01:00
Frank Möhle
bf44a0dd21 Remove bad extra "#endif" 2026-01-12 23:03:39 +01:00
Frank
650651e7cc show user message once
don't repeat slowMode warning when several busses overlap
2026-01-12 22:59:35 +01:00
Frank
e5d7d7aacc extra protection 2026-01-12 19:47:40 +01:00
Frank
05fb246af9 small optimization
* moved newStart and newEnd calculations into lower scope (``if (newBus->isOk())``)
* removed duplicate nullptr check
2026-01-12 19:40:22 +01:00
Frank
58281b4cd5 handle zero-length edge case 2026-01-12 19:31:53 +01:00
Frank
9cdbc7ad3c fix typo 2026-01-12 19:26:40 +01:00
Frank
45500d8481 newline 2026-01-12 19:21:32 +01:00
Frank
cb73d4b3de robustness improvement 2026-01-12 19:18:50 +01:00
Frank
eaec389ef4 disable SPC optimizations when busses overlap
support for "custom bus indices" that lead to overlaping output pixel ranges
2026-01-12 18:55:27 +01:00
Frank
75fe5b747c removing a flicker-protection delay
this is not necessary if we use the RMTHI flicker-free driver
2026-01-12 18:20:27 +01:00
Frank
872c38f3c2 (experimental) HUB75 small speedups
* removed unnecessary sanity checks from sPC and gPC
* gPC: use  inline color_fade() instead of FastLED .scale8()
in my tests on -S3 this gives a small speedup, 2% up to 6%
2025-11-17 19:30:52 +01:00
Frank
36648d1936 hot path optimization: make gamma correction inline
* make sure that gamma LUT is always initialized
* remove some unnecessary safety checks
* make gamma8() inline, for more speed
* use fast unGamma8 for preview
* add super-fast unGamma8 for HUB75 - old function lost 3-10 fps, this version does not reduce fps at all *grins*
2025-11-10 23:17:16 +01:00
Frank
d9e5426636 HUB75: small correction of order
first set _valid=false, then perform delay.
2025-11-02 16:38:03 +01:00
Frank
0510fd308f HUB75: small delay at cleanup, to ensure that DMA finishes before deleting the driver
based on a suggestion by @DedeHai
2025-11-02 16:33:10 +01:00
Frank
eec3e6d64d Merge pull request #269 from MoonModules/bus_sPC_gPC_optimizations
Bus level setPixelColor and getPixelColor optimizations
2025-11-01 13:39:25 +01:00
Frank
74c701b745 HUB75: no color temperature correction for performance reasons
Enable building color correction code if you really need it.
The effect of color correction is less noticeable on HUB75 than on ws2812b, however it can reduce your framerate by up to 10%.
2025-10-27 21:19:40 +01:00
Frank
1f99aeb506 small optimization: always allow gPC to use cached busses
previously gPC cached busses were disabled in slowMode (one pixel mapped to several outputs). However this should not be needed, because the first copy found should be like all other.
2025-10-24 00:05:44 +02:00
Frank
541b201855 bus.setPicelColor optimization: optimizing some CPU cycles out of the hot path in sPC and gPC
* optimize loops that scan through all busses
* small speedups for  Bus::autoWhiteCalc()
* small speedups for ColorOrderMap::getPixelColorOrder()

thanks to github Copilot for giving me the right ideas for this optimization
2025-10-20 21:58:23 +02:00
Frank
8067f1f70c bus.setPicelColor optimization: move colorBalanceFromKelvin into busmanager.cpp
colorBalanceFromKelvin() is only called from inside bus_manager.cpp, so we can help the compiler optimize by making it a local (static) fuction
2025-10-20 21:49:09 +02:00
Will Tatam
79d03a2c61 Remove unused code - direct hub75 rather than via our own buffer 2025-08-20 22:32:44 +01:00
Frank
2c0063dc5b tiny optimization
* use bitmask operations in getBitFromArray, setBitInArray
* make currentBri "const"
2025-01-17 21:13:27 +01:00
Frank
4221ed1859 LEDs driver: slowmode optimization
* isValid() -> isOk()
* removed unneeded "lastBus != nullptr" checks
* re-enable lastBus optimization in getPixelColor() and getPixelColorRestored()
* remove duplicate checks for _valid== true from busses (already done at BusManager level)
2025-01-16 20:58:32 +01:00
Frank
f24d35e970 slowMode fix
continue searching for busses in slowMode
2024-12-20 20:50:17 +01:00
Frank
02f51d4582 realtime mode bugfixes
- busses: ignore not valid bus instances
- "use main segment only": prevent flickering du to intermitted strip.service().
2024-12-20 17:47:07 +01:00
Frank
fd2bce521b fix for outputs not working any more when receiving DDP or art-net pixels
This disables bus caching (and related speedups) while receiving realtime UDP pixels.

Its still totally unclear to me what happens, and why disabling the cache solves problems.
2024-12-20 01:57:02 +01:00
Frank
3ef8d93bbe another attempt to reduces flickering
* BusManager::show(): explicitly wait until the bus driver is idle (done by NPB show, too, but in a different way)
* BusManager::removeAll(): use delay() instead of yield() - yield() does _not_ free the processor on esp32!
2024-12-12 14:50:39 +01:00
Troy
a5e9df6668 Revert "Merge pull request #204 from troyhacks/Strip_Level_Color_Adjust"
This reverts commit db55872732, reversing
changes made to 972257a7ee.
2024-12-10 12:14:03 -05:00
Troy
6ad0b2893a Merge branch 'mdev' into Strip_Level_Color_Adjust 2024-12-10 12:12:44 -05:00
Frank
61c2ba98b7 HUB75 small speedup
gave me 1-3 extra FPS on -S3 with 128x64
2024-11-24 17:32:59 +01:00
Frank
b1064e1cfe HUB75: use FM6124 driver for outdoor
It seems that the FM6124 driver makes some "outdoor" panels work, that previously only showed random color flicker. FM6124 is largely compatible with panels that did work with the standard driver, too.
2024-11-18 23:58:43 +01:00
Frank
fb259d1bc6 Merge pull request #179 from troyhacks/Art-Net-Improvements-v2
Art-Net Improvements
* AsyncUDP instead of WiFiUDP so it's much faster
* Support for professional Art-Net gear with many outputs
* Color-order remapping
* ESP32-P4 SIMD assembly optimization for brightness calc, a bit faster
* Full GUI support for all settings
* GUI guidance for setup
2024-11-18 13:47:17 +01:00
Frank
db1db330af HUB75: bugfix for 4-scan (virtual) panels chain
module cols parameter must be chain_length
2024-11-15 23:33:57 +01:00
Frank
06fc1eb5b8 HUB75: use last brightness on re-init
avoids brightness flash when saving LED preferences
2024-11-15 22:33:29 +01:00
Troy
3828d959e6 Minor indent fix 2024-11-10 13:39:47 -05:00
Troy
9223b3c6cd Free BusNetwork _data on cleanup 2024-11-10 13:35:54 -05:00
Troy
f096da3c8b Review Fixes 2024-11-10 07:18:39 -05:00
Frank
2e80d96400 HUB75 - comment out dead code 2024-11-08 12:24:34 +01:00
Troy
e7fb8f5748 IRAM_ATTR_YN for ES8266 2024-11-07 17:03:24 -05:00
Troy
7bf3f4aee0 Fixes for ESP8266 2024-11-07 13:48:17 -05:00
Troy
3f02ba73df Art-Net Color Order Maps, RGBW 2024-11-07 13:26:14 -05:00
Troy
44c6a0d73b Proper Art-Net Settings 2024-11-07 13:12:15 -05:00
Frank
c5ebf259cf HUB75: allow up to 6 panels on -S3 2024-11-07 00:25:35 +01:00
Frank
cbd1ce4705 HUB75 hack-the-DOM
* Reversed -> mxconfig.clkphase ; "Inverted clock phase"
* Off Refresh -> mxconfig.latch_blanking = 1; "Single-cycle latch blanking"
2024-11-07 00:06:46 +01:00
Frank
0ec5d3394f T7-S3 (LILYGO / TTGO) with MOONHUB
build env and HUB75 pinout for S3 and MOONHUB HUB75 adapter board
2024-11-04 22:54:30 +01:00
Frank
39bf245d1e HUB75 driver optimization
gains up to 3 fps in some effects.
2024-11-03 21:54:41 +01:00
Frank
6092705cc4 HUB75: reduced panel size limits for HD-WF2 2024-11-01 13:30:49 +01:00
Frank
91ff04a79b HUB75 small optimization
use CRGB instead converging to uint32_t, then extracting bytes with shift & mask
2024-10-29 18:45:54 +01:00
Frank
00a1a5a871 HUB75 bitdepth reduction rules per MCU 2024-10-14 21:26:36 +02:00