Skip to content

Commit

Permalink
Advanced support for AVX SIMD CPU extensions (#225)
Browse files Browse the repository at this point in the history
- ***Breaking changes***: requires `Glow Worm Luciferin` firmware (v5.16.7).   
- **Luciferin now has specific support for [AVX CPU extensions](https://github.com/sblantipodi/firefly_luciferin/wiki/Very-fast-capture#cpu-acceleration-using-avx-simd-extensions).**  
AMD and Intel are investing a lot of resources in improving their CPU extensions. Next-generation CPUs contain various optimizations related to `Advanced Vector Extensions (AVX)` which are `Single Instruction, Multiple Data (SIMD)` extensions to the x86 instruction set architecture for microprocessors.
AVX 512 and AVX 256 offer significant performance improvements and resource optimization benefits.
- USB/Serial communication has been redesigned: 
  - Improved USB device recognition under Linux.
  - Serial devices may cause an infinite loop due to buggy COM port enumeration. Fixed.
- [Tray icon](https://github.com/sblantipodi/firefly_luciferin/wiki/Tray-icon-shortcuts) has been improved with new shortcuts.
- Added a workaround for an existing Windows issue that causes tray menu to stay behind the taskbar. [Closes #229](#229).
- Fixed an issue that prevented Firefly Luciferin from detecting Glow Worm Luciferin devices when the computer was connected to a VPN.
- Firefly Luciferin infinitely starts itself after PC standby / wake up. [Closes #228](#228).
- There are microcontrollers that has built/in LED. This LED can stay on and be annoying, it now follows the [device reset](https://github.com/sblantipodi/firefly_luciferin/wiki/Device-reset) behaviour.
- Fixed an issue that prevented Linux version to show the UI when [debug level](https://github.com/sblantipodi/firefly_luciferin/wiki/Debug) is set to DEBUG.
- Fixed an issue that prevented Hyprland to show the UI.
- Fixed an issue that caused incorrect color reproduction on non-standard screen resolutions.
- Fixed an issue that prevented the Glow Worm Luciferin Light Firmware from properly turning off the LED strip when closing Firefly Luciferin.
- Java/JavaFX 23, libs update, code refactor to avoid using deprecated methods, CI/CD pipeline improvements.
- [Arduino Bootstrapper](https://github.com/sblantipodi/arduino_bootstrapper/releases) update (v.1.18.2).
  • Loading branch information
sblantipodi authored Sep 21, 2024
1 parent 5cb060e commit 53240b7
Show file tree
Hide file tree
Showing 57 changed files with 1,074 additions and 529 deletions.
12 changes: 6 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ jobs:
echo $RELEASE_VERSION
echo ${{ env.RELEASE_VERSION }}
shell: bash
- name: Set up AdoptOpenJDK 22
- name: Set up AdoptOpenJDK 23
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22.0.2'
java-version: '23'
architecture: x64
- name: Install submodules
run: |
Expand All @@ -49,7 +49,7 @@ jobs:
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
cd build_tools/wixtools;
echo ${{github.run_number}}
jpackage -i ../../target --type exe --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon ../../data/img/java_fast_screen_capture_logo.ico --win-menu --win-menu-group Luciferin --copyright "Davide Perini" --name "Firefly Luciferin" --vendor DPsoftware --win-dir-chooser --win-shortcut --win-per-user-install --win-upgrade-uuid 33c82dc4-e0e0-11ea-87d0-0242ac130003 --app-version "0.0.${{github.run_number}}" --win-shortcut --win-shortcut-prompt --java-options "-XX:+UseZGC -XX:+ZGenerational -XX:+UseStringDeduplication -Xms64m -Xmx1024m"
jpackage -i ../../target --type exe --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon ../../data/img/java_fast_screen_capture_logo.ico --win-menu --win-menu-group Luciferin --copyright "Davide Perini" --name "Firefly Luciferin" --vendor DPsoftware --win-dir-chooser --win-shortcut --win-per-user-install --win-upgrade-uuid 33c82dc4-e0e0-11ea-87d0-0242ac130003 --app-version "0.0.${{github.run_number}}" --win-shortcut --win-shortcut-prompt --java-options "-XX:+UseZGC -XX:+UseStringDeduplication -Xms64m -Xmx1024m --add-modules=jdk.incubator.vector"
shell: bash
- name: Adding asset to the release
env:
Expand Down Expand Up @@ -78,11 +78,11 @@ jobs:
run: |
echo $RELEASE_VERSION
echo ${{ env.RELEASE_VERSION }}
- name: Set up AdoptOpenJDK 22
- name: Set up AdoptOpenJDK 23
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22.0.2'
java-version: '23'
architecture: x64
- id: get-id
run: |
Expand All @@ -99,7 +99,7 @@ jobs:
run: |
ls -la target
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
jpackage -i target --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon data/img/luciferin_logo.png --linux-shortcut --copyright "Davide Perini" --name FireflyLuciferin --vendor DPsoftware --app-version "${{steps.get-id.outputs.id}}" --java-options "-XX:+UseZGC -XX:+ZGenerational -XX:+UseStringDeduplication -Xms64m -Xmx1024m"
jpackage -i target --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon data/img/luciferin_logo.png --linux-shortcut --copyright "Davide Perini" --name FireflyLuciferin --vendor DPsoftware --app-version "${{steps.get-id.outputs.id}}" --java-options "-XX:+UseZGC -XX:+UseStringDeduplication -Xms64m -Xmx1024m --add-modules=jdk.incubator.vector"
- name: Adding Linux asset to the release (Debian flavour)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
113 changes: 73 additions & 40 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -1,59 +1,92 @@
name: "CodeQL"
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"

on:
push:
branches: [ "master" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
schedule:
- cron: '31 7 * * 2'
- cron: '37 16 * * 5'

jobs:
analyze:
name: Analyze
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
permissions:
# required for all workflows
security-events: write

# required to fetch internal or private CodeQL packs
packages: read

# only required for workflows in private repositories
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'java' ]

include:
- language: java-kotlin
build-mode: none # This mode only analyzes Java. Set this to 'autobuild' or 'manual' to analyze Kotlin too.
# CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}

- name: Set up AdoptOpenJDK 22
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22.0.2'
architecture: x64

- name: Autobuild
run: |
git submodule update --init
idBeta=0.0.${{github.run_number}}
echo "idBeta=$idBeta" >> $GITHUB_OUTPUT
id=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)
echo "id=$id" >> $GITHUB_OUTPUT
mvn -B package
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"
- name: Checkout repository
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.

# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality

# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"
16 changes: 8 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ jobs:
echo $RELEASE_VERSION
echo ${{ env.RELEASE_VERSION }}
shell: bash
- name: Set up AdoptOpenJDK 22
- name: Set up AdoptOpenJDK 23
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22.0.2'
java-version: '23'
architecture: x64
- name: Install submodules
run: |
Expand All @@ -78,7 +78,7 @@ jobs:
run: |
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
cd build_tools/wixtools;
jpackage -i ../../target --type exe --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon ../../data/img/java_fast_screen_capture_logo.ico --win-menu --win-menu-group Luciferin --copyright "Davide Perini" --name "Firefly Luciferin" --vendor DPsoftware --win-dir-chooser --win-shortcut --win-per-user-install --win-upgrade-uuid 33c82dc4-e0e0-11ea-87d0-0242ac130003 --app-version "${{steps.get-id.outputs.id}}" --win-shortcut --win-shortcut-prompt --java-options "-XX:+UseZGC -XX:+ZGenerational -XX:+UseStringDeduplication -Xms64m -Xmx1024m"
jpackage -i ../../target --type exe --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon ../../data/img/java_fast_screen_capture_logo.ico --win-menu --win-menu-group Luciferin --copyright "Davide Perini" --name "Firefly Luciferin" --vendor DPsoftware --win-dir-chooser --win-shortcut --win-per-user-install --win-upgrade-uuid 33c82dc4-e0e0-11ea-87d0-0242ac130003 --app-version "${{steps.get-id.outputs.id}}" --win-shortcut --win-shortcut-prompt --java-options "-XX:+UseZGC -XX:+UseStringDeduplication -Xms64m -Xmx1024m --add-modules=jdk.incubator.vector"
shell: bash
- name: Adding asset to the release
env:
Expand All @@ -102,11 +102,11 @@ jobs:
run: |
echo $RELEASE_VERSION
echo ${{ env.RELEASE_VERSION }}
- name: Set up AdoptOpenJDK 22
- name: Set up AdoptOpenJDK 23
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22.0.2'
java-version: '23'
architecture: x64
- id: get-id
run: |
Expand All @@ -124,7 +124,7 @@ jobs:
run: |
ls -la target
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
jpackage -i target --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon data/img/luciferin_logo.png --linux-shortcut --copyright "Davide Perini" --name FireflyLuciferin --vendor DPsoftware --app-version "${{steps.get-id.outputs.id}}" --java-options "-XX:+UseZGC -XX:+ZGenerational -XX:+UseStringDeduplication -Xms64m -Xmx1024m"
jpackage -i target --main-class org.dpsoftware.JavaFXStarter --main-jar FireflyLuciferin-jar-with-dependencies.jar --icon data/img/luciferin_logo.png --linux-shortcut --copyright "Davide Perini" --name FireflyLuciferin --vendor DPsoftware --app-version "${{steps.get-id.outputs.id}}" --java-options "-XX:+UseZGC -XX:+UseStringDeduplication -Xms64m -Xmx1024m --add-modules=jdk.incubator.vector"
- name: Adding Linux asset to the release (Debian flavour)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -161,11 +161,11 @@ jobs:
id=$(echo $RELEASE_VERSION | cut -dv -f2)
echo "id=$id" >> $GITHUB_OUTPUT
shell: bash
- name: Set up AdoptOpenJDK 22
- name: Set up AdoptOpenJDK 23
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '22.0.2'
java-version: '23'
architecture: x64
- name: Set up Maven Settings for deploy
uses: s4u/[email protected]
Expand Down
Binary file modified data/img/baud_rate.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/img/enable_wifi.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/img/enable_wifi_mixed.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/img/mode_settings.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/img/multi_display/multimonitor_6.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/img/settings_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/img/simd.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/img/static_ip.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/img/theme_selector.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
75 changes: 32 additions & 43 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,39 @@ a {
</style>
<img align="right" width="100" height="100" src="https://raw.githubusercontent.com/sblantipodi/firefly_luciferin/master/data/img/luciferin_logo.png">

### Hotfix release:
- ***This issue only affects Firefly Luciferin, there is no need to update the firmware.***
- Fixed a regression introduced with the latest Firefly Luciferin update that prevented the software from launching correctly on Linux Wayland.
### In this release

### In this release:
- ***Breaking changes***: requires `Glow Worm Luciferin` firmware (v5.16.7).
- **Luciferin now has specific support
for [AVX CPU extensions](https://github.com/sblantipodi/firefly_luciferin/wiki/Very-fast-capture#cpu-acceleration-using-avx-simd-extensions).
**
AMD and Intel are investing a lot of resources in improving their CPU extensions. Next-generation CPUs contain various
optimizations related to `Advanced Vector Extensions (AVX)` which are `Single Instruction, Multiple Data (SIMD)`
extensions to the x86 instruction set architecture for microprocessors.
AVX 512 and AVX 256 offer significant performance improvements and resource optimization benefits.
- USB/Serial communication has been redesigned:
- Improved USB device recognition under Linux.
- Serial devices may cause an infinite loop due to buggy COM port enumeration. Fixed.
- [Tray icon](https://github.com/sblantipodi/firefly_luciferin/wiki/Tray-icon-shortcuts) has been improved with new
shortcuts.
- Added a workaround for an existing Windows issue that causes tray menu to stay behind the
taskbar. [Closes #229](https://github.com/sblantipodi/firefly_luciferin/issues/229).
- Fixed an issue that prevented Firefly Luciferin from detecting Glow Worm Luciferin devices when the computer was
connected to a VPN.
- Firefly Luciferin infinitely starts itself after PC standby / wake
up. [Closes #228](https://github.com/sblantipodi/firefly_luciferin/issues/228).
- There are microcontrollers that has built/in LED. This LED can stay on and be annoying, it now follows
the [device reset](https://github.com/sblantipodi/firefly_luciferin/wiki/Device-reset) behaviour.
- Fixed an issue that prevented Linux version to show the UI
when [debug level](https://github.com/sblantipodi/firefly_luciferin/wiki/Debug) is set to DEBUG.
- Fixed an issue that prevented Hyprland to show the UI.
- Fixed an issue that caused incorrect color reproduction on non-standard screen resolutions.
- Fixed an issue that prevented the Glow Worm Luciferin Light Firmware from properly turning off the LED strip when
closing Firefly Luciferin.
- Java/JavaFX 23, libs update, code refactor to avoid using deprecated methods, CI/CD pipeline improvements.
- [Arduino Bootstrapper](https://github.com/sblantipodi/arduino_bootstrapper/releases) update (v.1.18.2).

### In the previous releases:

- ***Breaking changes***: requires `Glow Worm Luciferin` firmware (v5.15.4)
- [Initial setup](https://github.com/sblantipodi/firefly_luciferin/wiki/Quick-start#install-firefly-luciferin-java-fast-screen-capture-software-on-your-pc)
Expand All @@ -41,43 +69,4 @@ a {
- Technicalities: Switched to the new ZGC Generational.
- [Arduino Bootstrapper](https://github.com/sblantipodi/arduino_bootstrapper/releases) update (v.1.18.1).

### In the previous releases:

- ***Breaking changes***: requires `Glow Worm Luciferin` firmware (v5.14.5)
- **Added support
for [Ethernet devices](https://github.com/sblantipodi/firefly_luciferin/wiki/Compatible-Hardware#ethernet-devices).**
Closes [#44](https://github.com/sblantipodi/glow_worm_luciferin/issues/44).
- QuinLed-ESP32-Ethernet
- QuinLed-Dig-Octa Brainboard-32-8L
- LilyGO-T-ETH-POE
- LilyGO-T-POE-Pro
- WT32-ETH01
- ESP32-ETHERNET-KIT-VE
- ESP32-POE
- ESP32-POE-WROVER
- WESP32
- Improved [aspect ratio auto detection](https://github.com/sblantipodi/firefly_luciferin/wiki/Aspect-ratio) on wide
screen format display.
- Display scaling setting now supports custom values.
Closes [#211](https://github.com/sblantipodi/firefly_luciferin/issues/211).
- Added support for non-standard Documents folder paths, ex: `~/OneDrive/Documents`, existing configuration files will
be automatically moved to your default path.
- Fixed an issue that prevented OTA fimware upload via PlatformIO.
- Improved German translations. Thanks @Maaaaarc for
the [pull request](https://github.com/sblantipodi/firefly_luciferin/pull/210).
- Improved latency
with [satellites](https://github.com/sblantipodi/firefly_luciferin/wiki/Surround-lighting-with-satellites).
- Improved latency when turning on/off the strip.
- Improved "smart button debounce" to eliminate unwanted button press due to noise on the board.
- Firefly
Luciferin [auto update feature](https://github.com/sblantipodi/firefly_luciferin/wiki/Luciferin-update-management) now
compresses the firmware before sending it to the ESP8266 microcontroller. Fixes some occasional hangup during firmware
update due to out of memory error.
- ESP32 file system layout has been adjusted to accommodate a larger firmware. This change has no impact if you use the
automatic update feature with Firefly Luciferin. However, manually updating the firmware through
the [Web Installer](https://sblantipodi.github.io/glow_worm_luciferin/) will erase your ESP32 device.
- Java/JavaFX 22, libs update, code refactor to avoid using deprecated methods, CI/CD pipeline improvements for faster
build.
- [Arduino Bootstrapper](https://github.com/sblantipodi/arduino_bootstrapper/releases) update (v.1.17.0).

[Click here for the complete changelog of previous versions.](https://github.com/sblantipodi/firefly_luciferin/releases)
Loading

0 comments on commit 53240b7

Please sign in to comment.