`mxconfig.clkphase = false;` seems to help reduce flicker on some panels.
@netmindz I think we should add a checkbox to the UI - something like "clocked on positive edge" (default = checked) which means clkphase = true. when unchecked, we set clkphase = false.
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
* 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)
* speedup: add functions to only blur rows or columns (50% faster)
* fire2012: tinkering with bur options. Vertical blur only when slider < 64 (faster); extra blur for slider values >192 (bush burn)
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"
* move HUB75 implementation into bus_manager.cpp
* add "override" keyword
* include FastLED.h if not included previously
* move RGB macros into bus_manager.h
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
* Optimize drawArc to skip pixels that are off-screen or outside the circle's bounding box. Also move repeating calculations out of the inner loop.
testcase 64x64 : 8fps --> 33 fps :-)
* mode_2Dfloatingblobs() improvements for large panels
* Segment::fillCircle() speed optimizations
* HUB75 hack (disabled by default): skip first fill(BLACK) when using double buffering (as the buffer gets cleared after each frame)
* cache width, height, and a few more values that are normally re-calculated for each pixel
* make normal sPC a bit faster
* Segment::fade_out() optimization
--> only active in FASTPATH mode, to preserve flash on small devices (8266)
--> code still needs some polishing
--> up to 20% speedup with some 2D effects (esp32, flash qio 80Mhz, -O2)
* optimized fadeToBlackBy() - don't repaint unchanged pixels
* made MIN_HEAP_SIZE configurable by build_flags
* specific error message when not enough memory for LEDs buffer
boot-up delay to fix wifi not starting in some setups
use
`-D WLED_BOOTUPDELAY=500` (or some other delay you want, in milliseconds)
in platformio env definition to add 500ms of delay before hardware init.
* prevent loss of projector when changing segment witdth (mirror).
* prevent unsigned wrap-around "0 -1" for projector
* use aux0 and aux1 segment vars (use them as signed)
* change default NUM_BANDS to 50% - better for smaller panels
* if less than 16 bands : map to full range instead of only showing lower frequencies - same behavious as GEQ 2D.
* require at least a 3x3 setup
* make sure that NUM_BANDS is limited by available columns
* avoid drawing with negative Y
* slightly reduce default "front fill", so that "borders" has a visible effect when running with defaults