Compare commits

...

5 Commits

Author SHA1 Message Date
Frank
0a3298cddc LTO for esp32dev_8M 2024-09-29 22:07:23 +02:00
Frank
d3f4326b1c upgrade to platform 6.6.0 with -flto support(keeping the same arduino-esp32 release)
platform 6.6.0 has build-in support for "-flto" (link time optimization)
2024-09-29 20:59:30 +02:00
Frank
d3c401ed4e wu_pixel small optimization
5% faster
2024-09-29 19:29:12 +02:00
Blaz Kristan
10d8cfde85 Fix FX filter bug 2024-09-29 13:00:07 +02:00
Frank
6f221852a2 partition file for 512Kb Filesystem, 1.7MB Program
the missing link between 256KB (very small FS) and 700KB (only 100KB extra program)
2024-09-28 18:25:16 +02:00
5 changed files with 55 additions and 20 deletions

View File

@@ -268,7 +268,7 @@ AR_lib_deps = kosme/arduinoFFT @ 2.0.1
;;
;; please note that you can NOT update existing ESP32 installs with a "V4" build. Also updating by OTA will not work properly.
;; You need to completely erase your device (esptool erase_flash) first, then install the "V4" build from VSCode+platformio.
platform = espressif32@ ~6.3.2
platform = espressif32@ ~6.6.0 ;; supports -flto
platform_packages = platformio/framework-arduinoespressif32 @ 3.20009.0 ;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them)
build_flags = -g
-Wshadow=compatible-local ;; emit warning in case a local variable "shadows" another local one
@@ -281,7 +281,7 @@ lib_deps =
[esp32s2]
;; generic definitions for all ESP32-S2 boards
platform = espressif32@ ~6.3.2
platform = espressif32@ ~6.6.0 ;; supports -flto
platform_packages = platformio/framework-arduinoespressif32 @ 3.20009.0 ;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them)
build_flags = -g
-DARDUINO_ARCH_ESP32
@@ -316,7 +316,7 @@ lib_deps =
[esp32s3]
;; generic definitions for all ESP32-S3 boards
platform = espressif32@ ~6.3.2
platform = espressif32@ ~6.6.0 ;; supports -flto
platform_packages = platformio/framework-arduinoespressif32 @ 3.20009.0 ;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them)
build_flags = -g
-DESP32
@@ -424,7 +424,9 @@ board = esp32dev
platform = ${esp32_idf_V4.platform}
platform_packages = ${esp32_idf_V4.platform_packages}
build_unflags = ${common.build_unflags}
-fno-lto
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=ESP32_8M #-D WLED_DISABLE_BROWNOUT_DET
-g3 -ggdb -flto=auto ;; enable size optimization by the linker - comment out when debugging. ("=4" just means "use 4 cores in parallel")
${esp32.AR_build_flags}
lib_deps = ${esp32_idf_V4.lib_deps}
${esp32.AR_lib_deps}
@@ -468,7 +470,9 @@ board_build.f_flash = 80000000L
board_build.flash_mode = qio
board_build.partitions = ${esp32.extended_partitions}
build_unflags = ${common.build_unflags}
-fno-lto
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=ESP32_WROVER
-g3 -ggdb -flto=4 ;; enable size optimization by the linker - comment out when debugging. ("=4" just means "use 4 cores in parallel")
-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue ;; Older ESP32 (rev.<3) need a PSRAM fix (increases static RAM used) https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/external-ram.html
-D DATA_PINS=25
${esp32.AR_build_flags}
@@ -540,7 +544,9 @@ platform = ${esp32s3.platform}
platform_packages = ${esp32s3.platform_packages}
upload_speed = 921600
build_unflags = ${common.build_unflags}
-fno-lto
build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=ESP32-S3_4M_qspi
-g3 -ggdb -flto=4 ;; enable size optimization by the linker - comment out when debugging. ("=4" just means "use 4 cores in parallel")
-DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
-DBOARD_HAS_PSRAM
-DLOLIN_WIFI_FIX ; seems to work much better with this
@@ -561,7 +567,9 @@ board_build.partitions = ${esp32.default_partitions}
board_build.flash_mode = qio
board_build.f_flash = 80000000L
build_unflags = ${common.build_unflags}
-fno-lto
build_flags = ${common.build_flags} ${esp32s2.build_flags} -D WLED_RELEASE_NAME=ESP32-S2
-g3 -ggdb -flto=4 ;; enable size optimization by the linker - comment out when debugging. ("=4" just means "use 4 cores in parallel")
-DARDUINO_USB_CDC_ON_BOOT=1
-DARDUINO_USB_MSC_ON_BOOT=0
-DARDUINO_USB_DFU_ON_BOOT=0

View File

@@ -0,0 +1,7 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x1B0000,
app1, app, ota_1, 0x1C0000,0x1B0000,
spiffs, data, spiffs, 0x370000,0x80000,
coredump, data, coredump,,64K
1 # Name, Type, SubType, Offset, Size, Flags
2 nvs, data, nvs, 0x9000, 0x5000,
3 otadata, data, ota, 0xe000, 0x2000,
4 app0, app, ota_0, 0x10000, 0x1B0000,
5 app1, app, ota_1, 0x1C0000,0x1B0000,
6 spiffs, data, spiffs, 0x370000,0x80000,
7 coredump, data, coredump,,64K

View File

@@ -704,11 +704,14 @@ void Segment::wu_pixel(uint32_t x, uint32_t y, CRGB c) { //awesome wu_pixel
WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)};
// multiply the intensities by the colour, and saturating-add them to the pixels
for (int i = 0; i < 4; i++) {
CRGB led = getPixelColorXY((x >> 8) + (i & 1), (y >> 8) + ((i >> 1) & 1));
int wu_x = (x >> 8) + (i & 1); // precalculate x
int wu_y = (y >> 8) + ((i >> 1) & 1); // precalculate y
CRGB led = getPixelColorXY(wu_x, wu_y);
CRGB oldLed = led;
led.r = qadd8(led.r, c.r * wu[i] >> 8);
led.g = qadd8(led.g, c.g * wu[i] >> 8);
led.b = qadd8(led.b, c.b * wu[i] >> 8);
setPixelColorXY(int((x >> 8) + (i & 1)), int((y >> 8) + ((i >> 1) & 1)), led);
if (led != oldLed) setPixelColorXY(wu_x, wu_y, led); // don't repaint if same color
}
}
#undef WU_WEIGHT

View File

@@ -35,6 +35,7 @@
--sgp: "block";
--bmt: 0;
--sti: 42px;
--stp: 42px;
}
html {
@@ -468,7 +469,7 @@ button {
padding: 4px 2px;
position: relative;
opacity: 1;
transition: opacity .5s linear, height .25s, transform .25s;
transition: opacity .25s linear, height .2s, transform .2s;
}
.filter {
@@ -1335,10 +1336,12 @@ TD .checkmark, TD .radiomark {
top: 42px;
}
#fxlist .lstI.selected,
#pallist .lstI.selected {
#fxlist .lstI.selected {
top: calc(var(--sti) + 42px);
}
#pallist .lstI.selected {
top: calc(var(--stp) + 42px);
}
dialog::backdrop {
backdrop-filter: blur(10px);
@@ -1353,10 +1356,12 @@ dialog {
color: var(--c-f);
}
#fxlist .lstI.sticky,
#pallist .lstI.sticky {
#fxlist .lstI.sticky {
top: var(--sti);
}
#pallist .lstI.sticky {
top: var(--stp);
}
/* list item content */
.lstIcontent {

View File

@@ -2828,7 +2828,12 @@ function search(field, listId = null) {
// restore default preset sorting if no search term is entered
if (!search) {
if (listId === 'pcont') { populatePresets(); return; }
if (listId === 'pallist') { populatePalettes(); return; }
if (listId === 'pallist') {
let id = parseInt(d.querySelector('#pallist input[name="palette"]:checked').value); // preserve selected palette
populatePalettes();
updateSelectedPalette(id);
return;
}
}
// clear filter if searching in fxlist
@@ -2887,18 +2892,25 @@ function initFilters() {
function filterFocus(e) {
const f = gId("filters");
if (e.type === "focus") f.classList.remove('fade'); // immediately show (still has transition)
// compute sticky top (with delay for transition)
setTimeout(() => {
const sti = parseInt(getComputedStyle(d.documentElement).getPropertyValue('--sti')) + (e.type === "focus" ? 1 : -1) * f.offsetHeight;
sCol('--sti', sti + "px");
}, 252);
const c = !!f.querySelectorAll("input[type=checkbox]:checked").length;
const h = f.offsetHeight;
const sti = parseInt(getComputedStyle(d.documentElement).getPropertyValue('--sti'));
if (e.type === "focus") {
// compute sticky top (with delay for transition)
if (!h) setTimeout(() => {
sCol('--sti', (sti+f.offsetHeight) + "px"); // has an unpleasant consequence on palette offset
}, 255);
f.classList.remove('fade'); // immediately show (still has transition)
}
if (e.type === "blur") {
setTimeout(() => {
if (e.target === document.activeElement && document.hasFocus()) return;
// do not hide if filter is active
if (gId("filters").querySelectorAll("input[type=checkbox]:checked").length) return;
f.classList.add('fade');
if (!c) {
// compute sticky top
sCol('--sti', (sti-h) + "px"); // has an unpleasant consequence on palette offset
f.classList.add('fade');
}
}, 255); // wait with hiding
}
}
@@ -2911,7 +2923,7 @@ function filterFx() {
gId("fxlist").querySelectorAll('.lstI').forEach((listItem,i) => {
const listItemName = listItem.querySelector('.lstIname').innerText;
let hide = false;
gId("filters").querySelectorAll("input[type=checkbox]").forEach((e) => { if (e.checked && !listItemName.includes(e.dataset.flt)) hide = true; });
gId("filters").querySelectorAll("input[type=checkbox]").forEach((e) => { if (e.checked && !listItemName.includes(e.dataset.flt)) hide = i>0 /*true*/; });
listItem.style.display = hide ? 'none' : '';
});
}