187 Commits

Author SHA1 Message Date
Frank
d948ec667e fast inline color fading for bus drivers
based on upstream color_fade() and color_scale() by @DedeHai
2026-03-26 12:12:32 +01:00
Troy
44d666c8b6 Give HUB75 Color Order Overrides 2026-03-25 09:32:14 -04:00
Frank
9cdbc7ad3c fix typo 2026-01-12 19:26:40 +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
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
6e8ab94ee9 colorKtoRGB optimization and bugfix
* bug: logf(temp-10) result becomes NaN when kelvin < 1200
* bug (RISC-V only): parameter of Bus::setCCT must be signed, to avoid undefined behaviour
* minor optimization by replacing constrain() with min(max())
2025-10-20 21:53:37 +02: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
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
61c2ba98b7 HUB75 small speedup
gave me 1-3 extra FPS on -S3 with 128x64
2024-11-24 17:32:59 +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
06fc1eb5b8 HUB75: use last brightness on re-init
avoids brightness flash when saving LED preferences
2024-11-15 22:33:29 +01:00
Troy
05d441db61 Review Fixes 2024-11-10 07:15:27 -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
d67ba8451a S3: increase MAX_LEDS
S3 (opi PSRAM) can handle 128x128 pixels on HUB75.
2024-10-14 17:37:37 +02:00
Frank
3fa5d0c5ba HUB75 on S3: workaround for not working runtime reconfiguration
* instead of deleting the driver object, we keep a "secret" reference and re-use it
* prevent having more than one HUB75 object
2024-10-14 13:05:27 +02:00
Frank
2aa0d47036 adding getPixelColorRestored()
similar to getPixelColor, but returns the original pixel without brightness adjustments.

* getPixelColorRestored is used by segment::sPC and segment::gPC
* getPixelColor is still used by ABL (auto brightness limiter)
2024-09-28 02:43:12 +02:00
Frank
1ddc9e38a2 HUB75 bugfix - preserve chain length parameter
chain length was always replaced with "4"
2024-09-26 16:55:40 +02:00
Frank
c5a0ab33ea clean up BusConfig nPins chaos
still very confusing logic, but documented in a better way.
2024-09-22 17:10:21 +02:00
Frank
3a638bb396 busmanger cannot handle more than 5 pins (hardcoded)
sizeof(pins)/sizeof(pins[0]) is the number of array elements in pins[].
2024-09-22 16:22:53 +02:00
Frank
80a2f2b85b minor corrections
* fix some override problems bus_manager (canShow() must not be const!!!)
* fixing some "comparing integer with different signedness" warnings
2024-09-21 19:41:51 +02:00
Troy
c2adb5be34 HUB75 PSRAM Buffers 2024-09-09 18:53:40 -04:00
Frank
a257e49bb4 HUB75 trying to reduce glitches
the HUB75 driver seems to randomly produce glitches, especially on hight contrast edges.

* roll back to HUB75 version 3.0.10 (known good)
* limit max brightness to 238 (=92%)
* add short delay after starting the driver
2024-08-12 12:20:15 +02:00
Frank
2934739ebf HUB75 cleanup, double buffer improvement
* code cleanup, removing some unneeded sanity checks
* use dirty bits in double buffer mode, too -> only not-black pixels are drawn into the back-buffer (20%-30% faster)
2024-08-09 17:46:14 +02:00
Frank
b5d97cca93 HUB75 leds buffer with dirty bit acceleration
Instead of using the memory-hungry driver double buffer, this implements a LEDS buffer inside the BusHub75Matrix class.
--> up to 50% faster
--> uses one "dirty" bit per pixel, to only re-transmit pixels that changed after the last "show"
2024-08-08 18:56:12 +02:00
Frank
5b7345ef39 HUB75 refactoring
* move HUB75 implementation into bus_manager.cpp
* add "override" keyword
* include FastLED.h if not included previously
* move RGB macros into bus_manager.h
2024-08-08 18:48:49 +02:00
Frank
fb2402fb97 HUB75 optimization (double buffer only)
In double duffer mode, the screen is blanked at each show(). So we can drop setPixelColor(BLACK) calls until we receive a pixel with different color.
2024-08-07 17:02:46 +02:00
Frank
7f9da309c9 const const const
adding hints for the compiler for optimization.
In case your custom build complains about "const", just remove the keyword. based on e82f38e277, but going further :-)

* "const" class functions : function does not modify any class attributes ( --> "this" becomes const)

* __attribute__((pure)) :  function return value depends only on the parameters and/or global variables. The function does not modify any global or static variables.
* __attribute__((const)) : function only examines arguments (no globals), and has no effects except the return value. This slightly more strict than "pure"
* hot: tells the compiler "this functions is called very often"
* cold: the opposite of hot
2024-08-07 14:58:38 +02:00
Frank
078bd70775 HUB75 speedups and minor improvements
* HUB75: allow to use native driver gamma correction - requires to undo WLED gamma
* added unGamma24() function
* HUB75: optimized setPixelColor()
* some experimental HUB75 stuff
2024-08-05 17:28:03 +02:00
Frank
657259acc2 Optimization: stop to constantly search for the bus
Adding a caching mechanism to the Bus Manager - up to 30% faster especially when many led pins are used.
2024-04-20 21:57:04 +02:00
Will Tatam
668a7577d4 pixel limit for hub75 2024-02-25 17:01:16 +00:00
Will Tatam
c463d5179d Set pixel limit by bus type 2024-02-25 17:00:41 +00:00
Will Tatam
e2aad4783d Allow chain of 1-4 panels - subject to memory 2024-02-24 17:27:20 +00:00
Will Tatam
26de408626 Add 8S and 16S, 1/8 ad 1/16 support 2024-02-24 11:30:22 +00:00
Will Tatam
3b1f408b25 Check full range of TYPE_HUB75MATRIX types 2024-02-23 20:10:45 +00:00
Will Tatam
2065d9ca2e Allocate pins using pinManager 2024-02-22 10:46:56 +00:00
Will Tatam
1dc17f93ba Impliment getPins 2024-02-10 17:34:57 +00:00
Will Tatam
bd228e3a1c Merge branch 'mdev' into ESP32-HUB75-MatrixPanel-DMA 2024-02-10 13:44:01 +00:00
Will Tatam
260159a6ca Cleanup and rename to generic Hub75 rather than SmartMatrix 2024-01-13 20:57:45 +00:00
Will Tatam
f5ccd6dde7 Add config for MatrixPortal_S3 2024-01-13 20:45:53 +00:00
Will Tatam
31edc73380 Tweaks 2024-01-13 18:52:34 +00:00
Will Tatam
83e51b47cd Tweaks 2024-01-13 16:39:08 +00:00
Will Tatam
308812875b Start testing output on Adafruit Matrix Portal S3 2024-01-12 23:26:42 +00:00
Blaz Kristan
68dc4d11a9 Autowhite cleanup
Fix for UCS8904 hasWhite().
2023-12-12 14:48:51 +01:00
Will Tatam
aae9b62a00 Define pins to match SmartMatrix esp32 formum layout 2023-10-25 01:26:21 +01:00
Will Tatam
3ba37e08bd Swap to ESP32-HUB75-MatrixPanel-DMA 2023-10-25 00:54:45 +01:00
Will Tatam
7c22bb4ac0 Move define 2023-10-24 09:27:33 +01:00
Will Tatam
9f55d7dfd8 Trying to get output working 2023-10-23 22:09:07 +01:00
Will Tatam
c693ee1536 Impliment BusSmartMatrix 2023-10-23 19:48:53 +01:00