Skip to content

Commit 53240b7

Browse files
authored
Advanced support for AVX SIMD CPU extensions (#225)
- ***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).
1 parent 5cb060e commit 53240b7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1074
-529
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ jobs:
2121
echo $RELEASE_VERSION
2222
echo ${{ env.RELEASE_VERSION }}
2323
shell: bash
24-
- name: Set up AdoptOpenJDK 22
24+
- name: Set up AdoptOpenJDK 23
2525
uses: actions/setup-java@v4
2626
with:
2727
distribution: 'temurin'
28-
java-version: '22.0.2'
28+
java-version: '23'
2929
architecture: x64
3030
- name: Install submodules
3131
run: |
@@ -49,7 +49,7 @@ jobs:
4949
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
5050
cd build_tools/wixtools;
5151
echo ${{github.run_number}}
52-
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"
52+
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"
5353
shell: bash
5454
- name: Adding asset to the release
5555
env:
@@ -78,11 +78,11 @@ jobs:
7878
run: |
7979
echo $RELEASE_VERSION
8080
echo ${{ env.RELEASE_VERSION }}
81-
- name: Set up AdoptOpenJDK 22
81+
- name: Set up AdoptOpenJDK 23
8282
uses: actions/setup-java@v4
8383
with:
8484
distribution: 'temurin'
85-
java-version: '22.0.2'
85+
java-version: '23'
8686
architecture: x64
8787
- id: get-id
8888
run: |
@@ -99,7 +99,7 @@ jobs:
9999
run: |
100100
ls -la target
101101
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
102-
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"
102+
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"
103103
- name: Adding Linux asset to the release (Debian flavour)
104104
env:
105105
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/codeql.yml

Lines changed: 73 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,92 @@
1-
name: "CodeQL"
1+
# For most projects, this workflow file will not need changing; you simply need
2+
# to commit it to your repository.
3+
#
4+
# You may wish to alter this file to override the set of languages analyzed,
5+
# or to provide custom queries or build logic.
6+
#
7+
# ******** NOTE ********
8+
# We have attempted to detect the languages in your repository. Please check
9+
# the `language` matrix defined below to confirm you have the correct set of
10+
# supported CodeQL languages.
11+
#
12+
name: "CodeQL Advanced"
213

314
on:
415
push:
516
branches: [ "master" ]
617
pull_request:
7-
# The branches below must be a subset of the branches above
818
branches: [ "master" ]
919
schedule:
10-
- cron: '31 7 * * 2'
20+
- cron: '37 16 * * 5'
1121

1222
jobs:
1323
analyze:
14-
name: Analyze
24+
name: Analyze (${{ matrix.language }})
25+
# Runner size impacts CodeQL analysis time. To learn more, please see:
26+
# - https://gh.io/recommended-hardware-resources-for-running-codeql
27+
# - https://gh.io/supported-runners-and-hardware-resources
28+
# - https://gh.io/using-larger-runners (GitHub.com only)
29+
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
1530
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
16-
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
1731
permissions:
32+
# required for all workflows
33+
security-events: write
34+
35+
# required to fetch internal or private CodeQL packs
36+
packages: read
37+
38+
# only required for workflows in private repositories
1839
actions: read
1940
contents: read
20-
security-events: write
2141

2242
strategy:
2343
fail-fast: false
2444
matrix:
25-
language: [ 'java' ]
26-
45+
include:
46+
- language: java-kotlin
47+
build-mode: none # This mode only analyzes Java. Set this to 'autobuild' or 'manual' to analyze Kotlin too.
48+
# CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
49+
# Use `c-cpp` to analyze code written in C, C++ or both
50+
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
51+
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
52+
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
53+
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
54+
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
55+
# 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
2756
steps:
28-
- name: Checkout repository
29-
uses: actions/checkout@v4
30-
31-
# Initializes the CodeQL tools for scanning.
32-
- name: Initialize CodeQL
33-
uses: github/codeql-action/init@v3
34-
with:
35-
languages: ${{ matrix.language }}
36-
37-
- name: Set up AdoptOpenJDK 22
38-
uses: actions/setup-java@v4
39-
with:
40-
distribution: 'temurin'
41-
java-version: '22.0.2'
42-
architecture: x64
43-
44-
- name: Autobuild
45-
run: |
46-
git submodule update --init
47-
idBeta=0.0.${{github.run_number}}
48-
echo "idBeta=$idBeta" >> $GITHUB_OUTPUT
49-
id=$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)
50-
echo "id=$id" >> $GITHUB_OUTPUT
51-
mvn -B package
52-
env:
53-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
54-
shell: bash
55-
56-
- name: Perform CodeQL Analysis
57-
uses: github/codeql-action/analyze@v3
58-
with:
59-
category: "/language:${{matrix.language}}"
57+
- name: Checkout repository
58+
uses: actions/checkout@v4
59+
60+
# Initializes the CodeQL tools for scanning.
61+
- name: Initialize CodeQL
62+
uses: github/codeql-action/init@v3
63+
with:
64+
languages: ${{ matrix.language }}
65+
build-mode: ${{ matrix.build-mode }}
66+
# If you wish to specify custom queries, you can do so here or in a config file.
67+
# By default, queries listed here will override any specified in a config file.
68+
# Prefix the list here with "+" to use these queries and those in the config file.
69+
70+
# 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
71+
# queries: security-extended,security-and-quality
72+
73+
# If the analyze step fails for one of the languages you are analyzing with
74+
# "We were unable to automatically build your code", modify the matrix above
75+
# to set the build mode to "manual" for that language. Then modify this step
76+
# to build your code.
77+
# ℹ️ Command-line programs to run using the OS shell.
78+
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
79+
- if: matrix.build-mode == 'manual'
80+
shell: bash
81+
run: |
82+
echo 'If you are using a "manual" build mode for one or more of the' \
83+
'languages you are analyzing, replace this with the commands to build' \
84+
'your code, for example:'
85+
echo ' make bootstrap'
86+
echo ' make release'
87+
exit 1
88+
89+
- name: Perform CodeQL Analysis
90+
uses: github/codeql-action/analyze@v3
91+
with:
92+
category: "/language:${{matrix.language}}"

.github/workflows/release.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ jobs:
4949
echo $RELEASE_VERSION
5050
echo ${{ env.RELEASE_VERSION }}
5151
shell: bash
52-
- name: Set up AdoptOpenJDK 22
52+
- name: Set up AdoptOpenJDK 23
5353
uses: actions/setup-java@v4
5454
with:
5555
distribution: 'temurin'
56-
java-version: '22.0.2'
56+
java-version: '23'
5757
architecture: x64
5858
- name: Install submodules
5959
run: |
@@ -78,7 +78,7 @@ jobs:
7878
run: |
7979
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
8080
cd build_tools/wixtools;
81-
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"
81+
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"
8282
shell: bash
8383
- name: Adding asset to the release
8484
env:
@@ -102,11 +102,11 @@ jobs:
102102
run: |
103103
echo $RELEASE_VERSION
104104
echo ${{ env.RELEASE_VERSION }}
105-
- name: Set up AdoptOpenJDK 22
105+
- name: Set up AdoptOpenJDK 23
106106
uses: actions/setup-java@v4
107107
with:
108108
distribution: 'temurin'
109-
java-version: '22.0.2'
109+
java-version: '23'
110110
architecture: x64
111111
- id: get-id
112112
run: |
@@ -124,7 +124,7 @@ jobs:
124124
run: |
125125
ls -la target
126126
rm -rf target/fireflyluciferin-${{steps.get-id.outputs.id}}.jar;
127-
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"
127+
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"
128128
- name: Adding Linux asset to the release (Debian flavour)
129129
env:
130130
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -161,11 +161,11 @@ jobs:
161161
id=$(echo $RELEASE_VERSION | cut -dv -f2)
162162
echo "id=$id" >> $GITHUB_OUTPUT
163163
shell: bash
164-
- name: Set up AdoptOpenJDK 22
164+
- name: Set up AdoptOpenJDK 23
165165
uses: actions/setup-java@v4
166166
with:
167167
distribution: 'temurin'
168-
java-version: '22.0.2'
168+
java-version: '23'
169169
architecture: x64
170170
- name: Set up Maven Settings for deploy
171171

data/img/baud_rate.jpg

5.94 KB
Loading

data/img/enable_wifi.jpg

5.15 KB
Loading

data/img/enable_wifi_mixed.png

-2.32 KB
Loading

data/img/mode_settings.jpg

5.52 KB
Loading
5.58 KB
Loading

data/img/settings_3.png

-6.78 KB
Loading

data/img/simd.png

180 KB
Loading

0 commit comments

Comments
 (0)