Skip to content

Commit 6644e30

Browse files
Amlogic DRM support (#1927)
* migrate to current master code * The rest from the previous WIP * SAND modifier treatment added from previous WIP * Cmake recommendation from @AlexanderStein * Remove duplicate code * Enable DRM for Linux * Remove linkage error when building minimum * Add DRM to Presets * Fix input device number is not set * Resilience and align to current grabber structure * Address some linter findings * Combine drm, fb in amlogic, improvements * Update library references from libgbm to libMali * Remove grabFrame * enable amlogic on rpi for testing * Add 'dl' library to target link libraries * Fix grabber UI and only show active drm devices * Remove console output * Do not test screensize during screensetup * Clean-up DRM and add tracing * Fix Log enum * Handle open failures * Change Logger to Smartpointer * Fix nightly tag is not a semver version * Check file open failure * Imporove tracing * Differentiate memory tracing scenarios * Update object tracing * Downward compatibility * Logging.ini template * gcc downward compatibility * Update fb to MAP_Shared * Missing header * Refactor DRM grabber * Revert "enable amlogic on rpi for testing" This reverts commit 9755536. * Do not show DRM Grabber on amlogic for selection * Disable debug output for release builds * Update qtlogging.ini * editorial changes * Improvements after review * Improvements after review * Update Changelog * Use same qt version when building with pre-built dependencies * Remove Dependencies.cmake as functionality was moved to OS related files --------- Co-authored-by: Paulchen Panther <[email protected]> Co-authored-by: Paulchen-Panther <[email protected]>
1 parent e86597f commit 6644e30

File tree

169 files changed

+2954
-1083
lines changed

Some content is hidden

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

169 files changed

+2954
-1083
lines changed

.github/actions/download-pre-built-deps/action.yml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,18 @@ inputs:
1010
description: Linux architecture
1111
required: false
1212
default: 'amd64'
13-
qt_version:
14-
type: string
15-
description: Qt version
16-
required: false
17-
default: '6'
1813
build_type:
1914
type: string
2015
description: Build type
2116
required: false
2217
default: 'release'
2318
outputs:
2419
cmakeArgs:
25-
description: "CMake arguments"
20+
description: "Resulting CMake arguments"
2621
value: ${{ steps.download-pre-built-deps.outputs.cmake-args }}
22+
qtVersion:
23+
description: "Determined Qt version"
24+
value: ${{ steps.download-pre-built-deps.outputs.qt-version }}
2725
runs:
2826
using: composite
2927
steps:
@@ -35,8 +33,9 @@ runs:
3533
preBuiltDeps='buildspec.json'
3634
baseURL=$(jq -r '.baseUrl' $preBuiltDeps)
3735
version=$(jq -r '.version' $preBuiltDeps)
38-
downloadHash=$(jq -r '.hashes .${{ inputs.os }} .${{ inputs.architecture }} .qt${{ inputs.qt_version }} .${{ inputs.build_type }}' $preBuiltDeps)
39-
downloadFilename=${{ inputs.os }}-${{ inputs.architecture }}-qt${{ inputs.qt_version }}-${{ inputs.build_type }}-$version.tar.gz
36+
downloadHash=$(jq -r '.hashes .${{ inputs.os }} .${{ inputs.architecture }} .${{ inputs.build_type }}' $preBuiltDeps)
37+
qtVersion=$(jq -r '.hashes .${{ inputs.os }} .${{ inputs.architecture }} .qt_version' $preBuiltDeps)
38+
downloadFilename=${{ inputs.os }}-${{ inputs.architecture }}-qt$qtVersion-${{ inputs.build_type }}-$version.tar.gz
4039
echo 💾 Download "$downloadFilename"...
4140
curl -OL "$baseURL"/"$version"/"$downloadFilename"
4241
if [[ ${{ inputs.os }} == 'windows' ]]; then
@@ -55,7 +54,9 @@ runs:
5554
fi
5655
echo ✅ Hash check passed.
5756
echo "cmake-args="-DUSE_PRE_BUILT_DEPS=ON -DPRE_BUILT_DEPS_DIR=$destDir"" >> $GITHUB_OUTPUT
57+
echo "qt-version=$qtVersion" >> $GITHUB_OUTPUT
5858
else
5959
echo ❌ Hash check failed.
6060
echo "cmake-args=" >> $GITHUB_OUTPUT
61+
echo "qt-version=" >> $GITHUB_OUTPUT
6162
fi

.github/actions/download-pre-built-deps/buildspec.json

Lines changed: 49 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,95 @@
11
{
2-
"version": "2025-10-18",
2+
"version": "2025-11-01",
33
"baseUrl": "https://github.com/hyperion-project/hyperion-deps/releases/download",
44
"hashes": {
55
"debian_bookworm": {
66
"amd64": {
7-
"qt6": {
8-
"debug": "a905db1cb0ec7f2099f9703e2b97f15d850b7aac69657416d6f4c0bda4256a6b",
9-
"release": "a7216c688c5a5ff4b6e1c534c9c939e422a675803a5831aaffbe7fc7ba173894"
10-
}
7+
"qt_version": "6.4.2",
8+
"debug": "06c425db6251dcd6109bc07bcb2aa1cfeb19139676651552b2ebaf28a33c854b",
9+
"release": "22fdfa2338b18883fb047954c895fdaae094ff5ff309da22cf9317912d425d8a"
1110
},
1211
"arm64": {
13-
"qt6": {
14-
"debug": "083ed521e20894138c751dc3406363167af39f846e080c0d8b12329f4468e59f",
15-
"release": "7ba77697a85496ae467249046db65f628aee3c13fbe16f1b17878eb59de42f80"
16-
}
12+
"qt_version": "6.4.2",
13+
"debug": "51b4e1f2bdb426f517e9fb620c1b4fb199a59f999009dd096ca1a5a3c75438fd",
14+
"release": "393bbc164584842ee463256f13a1cd49388d3d2ee29f00f667ac0c51339d0890"
1715
},
1816
"armv6": {
19-
"qt6": {
20-
"debug": "6a89a75d6c6bae815fa9357cf0c342f0ae0fa78be64d8d99d95d95b69e803bf7",
21-
"release": "ad756f9154b8b1a5bae7dc47f9a8a86264f46bf52e3d1457b90038d6640fd5d6"
22-
}
17+
"qt_version": "6.4.2",
18+
"debug": "6666953af031134e64c2a1e3424a34c356c7bfc67deee1f3b71474cb4c0ea71b",
19+
"release": "db3c3163fb478377e3510f9d6b30bbbfab4af5439b35b8e78bdd7997002f4357"
2320
},
2421
"armv7": {
25-
"qt6": {
26-
"debug": "acc3ea2126f84741eb0a803344f4b626d44bc739cb556416f2594616064fcbcb",
27-
"release": "75f343a6f015b58463e15762e8af79309656b648de1e8550b2e41aeea71c3a5e"
28-
}
22+
"qt_version": "6.4.2",
23+
"debug": "21011415966aa71a70ef5f4b6c4f9c8fbe6657bbe1270981e6bafe0bfe176644",
24+
"release": "864d173d7d5777852402eef92263f3dcf6628fc640ded86c415ea38d8b451197"
2925
}
3026
},
3127
"debian_bullseye": {
3228
"amd64": {
33-
"qt6": {
34-
"debug": "434603d57ffee0c4b6640dfcd1b06bb8c745c199d8a81d50c1cc304244bcf7ff",
35-
"release": "bc6540399f8fb198e194fc6080f0056267bce827511ade8f13843eb92f987bca"
36-
}
29+
"qt_version": "6.4.2",
30+
"debug": "f0bc24c51b535152416fe3e0e26380f52398014d14b545d7405165aab57cf4c7",
31+
"release": "7f77f48490b15998c5e0bd521f5171ff2e84da48f8a64a352e326d6251bca326"
3732
},
3833
"arm64": {
39-
"qt6": {
40-
"debug": "01e2b25c191dac140fe9c24f3d3e22bf1020ed8ee44867d25e021b0eded8699e",
41-
"release": "25d25009e563899fd1abfd2ca079b3e396f20774a680a991c086d5f5430dd5a8"
42-
}
34+
"qt_version": "6.4.2",
35+
"debug": "fedf553b11146ffb78b21edf9a4c2baa4a7762c8ff48a1dbd17df8eb68dcac07",
36+
"release": "1da73a58405df370e93a63e1e543edd77e4c17a36b9a418160e681023767663e"
4337
},
4438
"armv6": {
45-
"qt5": {
46-
"debug": "8b253cac7614e5debda8b8749d963b1d944f54198fd12b3f63e31bfd4a4e57e6",
47-
"release": "8c3f23457e5f033f391986fa860b0f7835053fcfdc34ba4c8e4f345349ea5610"
48-
}
39+
"qt_version": "5.15.2",
40+
"debug": "ded600345ddf13a720dea9526851c3c9a0c3c6f2d8a09562522c68359172f087",
41+
"release": "154ef53cceb244a38017ebfb93df8648759d6fa136fcc1f1ed56b3e52e1b2e11"
4942
},
5043
"armv7": {
51-
"qt6": {
52-
"debug": "8099bef7e66a14b83736dea63f3489b1387533bd02107ef41b259323a0379086",
53-
"release": "9231e3dff694d4cb2f513ec087574b01fae8f8d48ca30f97a5d30d194e8c5b71"
54-
}
44+
"qt_version": "6.4.2",
45+
"debug": "d718231973b00d074c180efa9c8e67e889de13e285c9cc4636b2438a6c2cbce5",
46+
"release": "2aa94250e99f348202d87bfb668053b503ed1a0bb96430b27764080506c89367"
5547
}
5648
},
5749
"debian_trixie": {
5850
"amd64": {
59-
"qt6": {
60-
"debug": "38d9ebb0e97120ec815977f855eb5c44681f8a312f70a0fb0e3e0d7fc1760ea4",
61-
"release": "6b8513dd42036428b704d775c5e4e39bd324485bd9d54ff49ad6056259e53425"
62-
}
51+
"qt_version": "6.8.2",
52+
"debug": "6c7a63ff73ab6ec215d18a3aa1a61d75adc70d38f8b8cf31bbb7552d64848ce3",
53+
"release": "a0546be2ce99d482ecce7e9bd72444784717f841ab9678049337fc0ff4f3fc67"
6354
},
6455
"arm64": {
65-
"qt6": {
66-
"debug": "042a822aac4c0567b4074fe7a665f1fc1a61e6f3eb9a035c113f585ed2ee11c7",
67-
"release": "322cd767e3b4e7d18166af091cb83bac8c7b7001552da0a379f397c680da278f"
68-
}
56+
"qt_version": "6.8.2",
57+
"debug": "b82a0e8a12ae5171a9e2d410558d9d2ea41b1347abb9584b401cf0afcf3a816d",
58+
"release": "a05ae0959a59bf2f6027a3e6df57c66e5cd0ff4b528cbc8fea62fda12949719d"
6959
},
7060
"armv6": {
71-
"qt6": {
72-
"debug": "7b72cf3b1f98000d60789ec19c33afa05c368198717bf9e4609c0c1a0a721ede",
73-
"release": "8bffeb651aa7c3c0337567c949a7587720e130c4da64078408d0fd9e8edcac42"
74-
}
61+
"qt_version": "6.8.2",
62+
"debug": "7dacde55ac25973658e94eb873529800812a534113d3bc2e65af14f781b7cceb",
63+
"release": "9aec7657d52171259bc50319c2079a34136b1f96a4cf23892cb14d016121cde3"
7564
},
7665
"armv7": {
77-
"qt6": {
78-
"debug": "6f8df2ce86dd0cd3006ddb9502ac383f764c6bee2f7ec7229b0b4b66fa0abe4a",
79-
"release": "dbb31da97e047bfb77fb872d54f8bf38909cfa369d279942f9de9c4ca807189f"
80-
}
66+
"qt_version": "6.8.2",
67+
"debug": "6f0df0bb7671a38746f0af1897b1c306c51c34d94f453beba912430c7e63234a",
68+
"release": "349e2bcba3b2361840f03110807489b25e5b1de186483a713ae990f825358736"
8169
}
8270
},
8371
"macos": {
8472
"arm64": {
85-
"qt6": {
86-
"debug": "15c33416e706ebb9c32b9785e9b47e05c2eed484a729e2eb672966586bf248da",
87-
"release": "8fcbc9ac2f753d312a62f50ad39632d5befde3397b53d00de6e6803b8a0cf889"
88-
}
73+
"qt_version": "6.9.3",
74+
"debug": "9b4566c573535edeb02fbf76925d8a0c6881b29b32ae85ef1af6dfd7ada1fa39",
75+
"release": "76923c8d06f2aa7519367a85a117bfd58183848a9368d3c244b248f8691b4d81"
8976
},
9077
"x64": {
91-
"qt6": {
92-
"debug": "5873403e647af0d199cd79857058030894d4175ee6d1df237b0212f69fb2cc98",
93-
"release": "bd6c5704423f1f782771ae68695960554b9b56ec43f83dff3ce938f067fb2a36"
94-
}
78+
"qt_version": "6.9.3",
79+
"debug": "6ae7fec1f607577a004f29125cad6c2d0877dc88b1589509625bfa139c8d7e2b",
80+
"release": "d8eaf0cb1694e3b0ee0608fe2d70351e7aa6c43074a373573d6411c93daf4b98"
9581
}
9682
},
9783
"windows": {
9884
"arm64": {
99-
"qt6": {
100-
"release": "0f5a324b1d852dd7d2093e3c275bcd3209e368fda32dc8c760f3e26931c687e8",
101-
"relwithdebinfo": "68e6e468b0cc9ff47a54454b120cbf47ef84a575d2a1da9bd7912132799fda1c"
102-
}
85+
"qt_version": "6.9.3",
86+
"release": "100d981764e5cd761bba0edf25dc46a0975be5f56766d34a5fbdb66053929a91",
87+
"relwithdebinfo": "d7c51b3f8d1903e7babb379e1b30210ffbcd3a7b18bbafbc5d7b8030653dfee6"
10388
},
10489
"x64": {
105-
"qt6": {
106-
"release": "de989913f047aff4d5f8bf5ee65ebf7b14aaa9478daabfb361e52883c100a181",
107-
"relwithdebinfo": "5741b925ec912e1348f4e0b549aa0bb33b24e31d303236bb6f78399646aed3a2"
108-
}
90+
"qt_version": "6.9.3",
91+
"release": "9925c722758f09b7174b3a861a754c100a03e55f9fae132bd4c428d9744ca2f3",
92+
"relwithdebinfo": "7b693d95f221dd678c70660f41f1f9cf27b146b1ab6f5732096c6641b5b8a5bf"
10993
}
11094
}
11195
}

.github/workflows/debian.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ jobs:
7171
with:
7272
os: debian_${{ inputs.codename }}
7373
architecture: ${{ matrix.os.architecture[0] }}
74-
qt_version: ${{ inputs.codename == 'bullseye' && matrix.os.architecture[0] == 'armv6' && '5' || '6' }}
7574
build_type: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }}
7675

7776
- name: 👷 Build ${{ env.HINT }}
@@ -87,7 +86,7 @@ jobs:
8786
-e LC_ALL="C.UTF-8" \
8887
ghcr.io/hyperion-project/debian:${{ env.DOCKER_TAG }} \
8988
/bin/bash -c "
90-
git config --global --add safe.directory /source &&
89+
git config --global --add safe.directory /source &&
9190
cmake --preset linux-${{ env.BUILD_TYPE }} ${{ steps.dependencies.outputs.cmakeArgs }} -DPLATFORM=${{ matrix.os.platform }} ${{ env.CPACK_SYSTEM_PROCESSOR }} &&
9291
cmake --build --preset linux-${{ env.BUILD_TYPE }} --target package &&
9392
cp /source/build/Hyperion-* /deploy/ 2>/dev/null"

.github/workflows/macos.yml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
- name: ⬇ Checkout
4343
uses: actions/checkout@v5
4444
with:
45-
submodules: recursive
45+
submodules: recursive
4646
fetch-depth: 0 # Ensures all tags are fetched
4747

4848
- name: 🔧 Prepare
@@ -55,12 +55,6 @@ jobs:
5555
echo -n "+nightly$(date '+%Y%m%d')" >> .version
5656
fi
5757
58-
- name: 📥 Install dependencies
59-
uses: tecolicom/actions-use-homebrew-tools@v1
60-
with:
61-
tools: qt@6 coreutils
62-
key: ${{ runner.os }}-${{ matrix.os.architecture }}-homebrew-packages
63-
6458
- name: 💾 Download Pre-Build Dependencies
6559
id: dependencies
6660
uses: ./.github/actions/download-pre-built-deps
@@ -69,10 +63,20 @@ jobs:
6963
architecture: ${{ matrix.os.architecture }}
7064
build_type: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }}
7165

66+
- name: 📥 Install Qt ${{ env.QT_VERSION }}
67+
uses: jurplel/install-qt-action@v4
68+
with:
69+
version: ${{ env.QT_VERSION }}
70+
target: 'desktop'
71+
modules: 'qtserialport qtwebsockets'
72+
cache: 'true'
73+
cache-key-prefix: 'cache-qt-macos'
74+
env:
75+
QT_VERSION: ${{ steps.dependencies.outputs.qtVersion != '' && steps.dependencies.outputs.qtVersion || '' }}
76+
7277
- name: 👷 Build ${{ env.HINT }}
7378
shell: bash
7479
run: |
75-
# Build
7680
cmake --preset macos-${{ env.BUILD_TYPE }} ${{ steps.dependencies.outputs.cmakeArgs }}
7781
cmake --build --preset macos-${{ env.BUILD_TYPE }} --target package
7882
env:

.github/workflows/windows.yml

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
uses: actions/checkout@v5
4444
with:
4545
submodules: recursive
46-
fetch-depth: 0 # Ensures all tags are fetched
46+
fetch-depth: 0 # Ensures all tags are fetched
4747

4848
- name: 🔧 Prepare
4949
shell: bash
@@ -55,21 +55,31 @@ jobs:
5555
echo -n "+nightly$(date '+%Y%m%d')" >> .version
5656
fi
5757
58+
- name: 💾 Download Pre-Build Dependencies
59+
id: dependencies
60+
uses: ./.github/actions/download-pre-built-deps
61+
with:
62+
os: 'windows'
63+
architecture: ${{ matrix.os.architecture }}
64+
build_type: ${{ inputs.event_name == 'pull_request' && 'relwithdebinfo' || 'release' }}
65+
5866
- name: 📥 Install Python
5967
uses: actions/setup-python@v6
6068
with:
6169
python-version: '3.13.7'
6270
architecture: ${{ matrix.os.architecture }}
6371

64-
- name: 📥 Install Qt
72+
- name: 📥 Install Qt ${{ env.QT_VERSION }}
6573
uses: jurplel/install-qt-action@v4
6674
with:
67-
version: '6.8.*'
75+
version: ${{ env.QT_VERSION }}
6876
target: 'desktop'
6977
modules: 'qtserialport qtwebsockets'
7078
cache: 'true'
7179
cache-key-prefix: 'cache-qt-windows'
7280
setup-python: 'false'
81+
env:
82+
QT_VERSION: ${{ steps.dependencies.outputs.qtVersion != '' && steps.dependencies.outputs.qtVersion || '' }}
7383

7484
- name: 📥 Install latest CMake and Ninja
7585
uses: lukka/get-cmake@latest
@@ -85,39 +95,31 @@ jobs:
8595
- name: Download/Install Inno Setup
8696
run: |
8797
echo "Checking pre-installation..."
88-
98+
8999
set "ISCC_PATH=%programfiles(x86)%\Inno Setup 6\ISCC.exe"
90-
100+
91101
if exist "%ISCC_PATH%" (
92102
echo ::warning::Inno Setup is already installed
93103
exit /b 0
94104
)
95-
105+
96106
echo "Downloading Inno Setup..."
97-
107+
98108
set "_url_=https://jrsoftware.org/download.php/is.exe?site=1"
99109
set "_file_=innosetup.exe"
100-
110+
101111
curl -L -o "%tmp%\%_file_%" "%_url_%"
102-
112+
103113
echo "Installing Inno Setup..."
104114
"%tmp%\%_file_%" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
105-
115+
106116
if not exist "%ISCC_PATH%" (
107117
echo "::error::Inno Setup installation failed"
108118
exit 1
109119
)
110-
120+
111121
echo "Inno Setup installed successfully!"
112122
shell: cmd
113-
114-
- name: 💾 Download Pre-Build Dependencies
115-
id: dependencies
116-
uses: ./.github/actions/download-pre-built-deps
117-
with:
118-
os: 'windows'
119-
architecture: ${{ matrix.os.architecture }}
120-
build_type: ${{ inputs.event_name == 'pull_request' && 'relwithdebinfo' || 'release' }}
121123

122124
- name: 👷 Build ${{ env.HINT }}
123125
shell: cmd

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1717
- HTTPS support for homeassistant LED devices (#1886)
1818
- Hue Bridge - Use https and certificates for all API calls, support Bridge Pro (V3)
1919
- Hue Bridge - Alternate certificate support
20+
- Linux: New DRM/KMS screen grabber with plane-based capture - not feature complete yet
21+
- Logging/Tracing: Introduced qlogging categories to enable dynamic tracing
2022

2123
---
2224

2325
### 🔧 Changed
2426

2527
- Hue Bridge - Wizard updates to support bridge-ids, overall code refactoring
2628
- USB Grabber - Default hardware control properties are now applied when a new USB grabber is selected (avoids black images)
29+
- Amlogic grabber - Support to switch between DRM & FB-DEV for CoreElec New Order version
30+
- Web UI: Update panel title uses "Hyperion - <version>"; skip showing the "nightly" tag in releases list
31+
- Screen grabbers: Commonized base with getDeviceName/getInputDeviceDetails; explicit constructors; improved error handling
32+
- Framebuffer grabber: Internal cleanup, consistent device naming, safer mmap usage
33+
- Logger internals: use smart pointers and clean-ups
2734

2835
- **Fixes:**
2936
- UI - Language is not selectable (#1877)
37+
- UI - Release were not shown on Update page
38+
- UI - Fixes for input/format selection
3039
- CEC-Handler is not stopped properly
3140
- Qt-Grabber (Windows) does not apply pixel ratio (#1882) - _Thanks to @SolberLight_
3241
- LED-devices are not retrying to establish connectivity, if supported by the device

0 commit comments

Comments
 (0)