Commit Graph

178 Commits

Author SHA1 Message Date
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
Will Tatam
228c090185 Start adding SmartMatrix code 2023-10-23 18:27:02 +01:00
Frank
3cc1d30090 optimization for ABL hotfix
* adding an optional parameter to setBrightness(). ApplyPostAdjustments() will only be called if `immediate=true`. Only ABL will use immediate=true, to ensure electrical safety of equipment.

This allows some optimizations of performance, as ApplyPostAdjustments() is time consuming.

* busses.setBrightness(bri) --> applied to all future pixels (fast, lossless)
* busses.setBrightness(bri, true) --> applied directly to all previously set pixels (slower, lossy)
2023-07-01 20:23:39 +02:00
Frank
3127c60b41 Merge branch 'mdev' into audio_fastpath 2023-06-15 20:54:57 +02:00
Frank
579dcf0835 align with upstream buildenv and librararies
* esp8266 core 4.1.0
* esp32 "V4" core 5.2.0
* neopixelbus 2.7.5
* use NeoPixelBusLg
* Make SPI bus speed user configurable

* adjust MM buildEnv to match upstream

https://github.com/Aircoookie/WLED/pull/3144

https://github.com/Aircoookie/WLED/pull/3173
2023-06-06 12:58:24 +02:00
Frank
7d0e627e14 some effect optimizations
* getpixelcolor: attribute pure - it reads memory, but does not write
* some optimizations for SEGMENT.blur() and SEGMENT.fadeToBlackBy()

* FX.c:pp remove double calls to blur() and fade_out()
* FX.cpp: SEGMENT.setUpLeds() added to effects, to enable LED buffering (safe some time because getPixelColor does not need to access NeopixelBus)

* a few other optimizations to safe time and avoid "expensive" operations
* set I2C bus speed to 400kHz (default is 100Khz)

* a few other small optimizations and tweaks
* pio: esp32 V4 builds use "patch5" toolchain version, which contains a few bugfixes especially for memory management.
2023-05-03 20:33:23 +02:00
Frank
40c96c14f5 a bunch of smaller speedups to core functions
*  make local functions "static"
* use fast_ int types where possible
* use native min/max instead of MIN/MAX macros. Macros evaluate each parameter TWICE!!
* adding __attribute__((pure)) and __attribute((const)) to help the compiler optimize
* ws.cpp: reduce max "live leds" in fastpath mode
2023-04-30 18:41:30 +02:00
Blaž Kristan
a7cded21f7 Merge branch 'main' into led-gaps 2023-02-14 14:28:10 +01:00
Christian Schwinne
74156b7ed8 Support white addressable LED strips (#3073)
* Support white addressable LED strips

* Various white handling tweaks

Allow RGB controls for white-only busses depending on AWM (makes palette-only FX work on non-RGB addressable busses)
Fixed RGB controls hidden if segment contained any non-RGB bus (even though there is also an RGB bus in that segment)
New Max auto white mode
Added hasCCT() bus method
Rename methods to be clearer
WS2811 White getPixelColor fix()

* Fix merge conflict (bus manager cpp)
2023-02-14 01:33:06 +01:00
Blaž Kristan
dec45109d3 Refactor busmgr (#3079)
* Refactor bus manager.

* Fix for net debug

* Fix 8266 compile

* Move bus static members to proper cpp

---------

Co-authored-by: cschwinne <dev.aircoookie@gmail.com>
2023-02-05 23:48:43 +01:00