Skip to content

build(windows): add arm64 support#3905

Merged
ReenigneArcher merged 15 commits intoLizardByte:masterfrom
rbqvq:master
Feb 8, 2026
Merged

build(windows): add arm64 support#3905
ReenigneArcher merged 15 commits intoLizardByte:masterfrom
rbqvq:master

Conversation

@rbqvq
Copy link
Contributor

@rbqvq rbqvq commented May 25, 2025

Description

This PR adds an arm64 build for Windows.

Issues Fixed or Closed

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

@rbqvq

This comment was marked as resolved.

@rbqvq rbqvq force-pushed the master branch 4 times, most recently from 0ccee19 to 4039fec Compare May 25, 2025 10:23
@rbqvq
Copy link
Contributor Author

rbqvq commented Jun 2, 2025

Can we use this hardware encode? 🤔
obsproject/obs-studio#11993

@ReenigneArcher
Copy link
Member

I think MF encoder is already included with the FFmpeg build, so why not?

@rbqvq
Copy link
Contributor Author

rbqvq commented Jun 2, 2025

I think MF encoder is already included with the FFmpeg build, so why not?

Well, I didn't read the source code of sunshine.
This part is up to you. 🤪

@rbqvq

This comment was marked as resolved.

@rbqvq rbqvq force-pushed the master branch 11 times, most recently from 9d0c82c to b0e2234 Compare June 9, 2025 09:53
@rbqvq rbqvq force-pushed the master branch 2 times, most recently from 48376c4 to a3ee774 Compare June 30, 2025 05:21
@ReenigneArcher

This comment was marked as resolved.

@ReenigneArcher

This comment was marked as resolved.

@rbqvq

This comment was marked as resolved.

rbqvq and others added 2 commits February 7, 2026 22:09
Add CI build for Windows ARM64.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
Add windows arm64 documents.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
@ReenigneArcher
Copy link
Member

Thank you. Please no more force pushing.

@rbqvq
Copy link
Contributor Author

rbqvq commented Feb 7, 2026

Thanks, I went back to sleep.
Leave the rest to you.

Insert a 'Debug nsis' step into .github/workflows/ci-windows.yml that always runs and prints the NSISOutput.log using the msys2 shell. This captures NSIS installer build logs for troubleshooting; the step uses '|| true' to avoid failing the job. The step is placed before the existing 'Debug wix' step.
Make NSIS detailed logging conditional on the target architecture by adding NSIS_LOGSET_COMMAND (set to "LogSet on" only when CMAKE_SYSTEM_PROCESSOR matches AMD64) and using it in CPACK_NSIS_EXTRA_INSTALL_COMMANDS and CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS instead of always calling LogSet. Update docs/getting_started.md to note that the install.log under %PROGRAMFILES% is available on AMD64 only.
@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 7, 2026

@ReenigneArcher ReenigneArcher merged commit d591643 into LizardByte:master Feb 8, 2026
41 of 42 checks passed
@codecov
Copy link

codecov bot commented Feb 8, 2026

Codecov Report

❌ Patch coverage is 16.66667% with 15 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (master@cdc4443). Learn more about missing BASE report.
⚠️ Report is 3 commits behind head on master.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/video.cpp 37.50% 3 Missing and 2 partials ⚠️
src/config.cpp 0.00% 4 Missing ⚠️
src/platform/windows/display_vram.cpp 0.00% 1 Missing and 1 partial ⚠️
src/platform/windows/input.cpp 0.00% 2 Missing ⚠️
src/platform/windows/misc.cpp 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##             master    #3905   +/-   ##
=========================================
  Coverage          ?   14.11%           
=========================================
  Files             ?       95           
  Lines             ?    19859           
  Branches          ?     9189           
=========================================
  Hits              ?     2804           
  Misses            ?    13523           
  Partials          ?     3532           
Flag Coverage Δ
Archlinux 11.19% <11.11%> (?)
FreeBSD-14.3-amd64 13.23% <16.66%> (?)
Linux-AppImage 11.60% <11.11%> (?)
Windows-AMD64 13.48% <6.66%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/nvenc/nvenc_d3d11_on_cuda.h 0.00% <ø> (ø)
src/platform/windows/audio.cpp 25.13% <ø> (ø)
src/video.h 61.11% <ø> (ø)
src/platform/windows/display_vram.cpp 8.93% <0.00%> (ø)
src/platform/windows/input.cpp 0.63% <0.00%> (ø)
src/platform/windows/misc.cpp 15.20% <0.00%> (ø)
src/config.cpp 3.03% <0.00%> (ø)
src/video.cpp 29.07% <37.50%> (ø)

@ReenigneArcher
Copy link
Member

@rbqvq unfortunately, now arm64 is failing in Debian/Ubuntu images.

[900](https://github.com/LizardByte/Sunshine/actions/runs/21792778237/job/62875233089#step:11:18906)
#35 7492.4 ✓ 7 modules transformed.
#35 7492.4 ✗ Build failed in 4.68s
#35 7492.4 error during build:
#35 7492.4 byte length of Uint32Array should be a multiple of 4
#35 7492.4     at new Uint32Array (<anonymous>)
#35 7492.4     at getAstBuffer (file:///build/sunshine/node_modules/rollup/dist/es/shared/parseAst.js:2073:19)
#35 7492.4     at convertProgram (file:///build/sunshine/node_modules/rollup/dist/es/shared/node-entry.js:15677:48)
#35 7492.4     at Module.setSource (file:///build/sunshine/node_modules/rollup/dist/es/shared/node-entry.js:17392:24)
#35 7492.4     at async ModuleLoader.addModuleSource (file:///build/sunshine/node_modules/rollup/dist/es/shared/node-entry.js:21474:13)
#35 7492.4 ninja: build stopped: subcommand failed.
#35 ERROR: process "/bin/bash -o pipefail -c /dev/pipes/_BUILD" did not complete successfully: exit code: 1

We don't build these for PRs because they take 3+ hours. Do you have some idea how we can conditionally use these additions to the package.json?

    "@rollup/wasm-node": "4.57.1"
  },
  "overrides": {
    "rollup": "npm:@rollup/wasm-node@4.57.1"

@rbqvq
Copy link
Contributor Author

rbqvq commented Feb 8, 2026

I think we can provide two package.json and use script to rename them.

@ReenigneArcher
Copy link
Member

Can we have a second package.json that depends on the first one? And use second one only when we need the override? If we can reduce the duplication that would be ideal.

@rbqvq
Copy link
Contributor Author

rbqvq commented Feb 8, 2026

Or we can build them on a unified CI, and the CI of each OS builder only needs to pull the static resources that have been built.

rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
@rbqvq rbqvq mentioned this pull request Feb 8, 2026
21 tasks
rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
@rbqvq
Copy link
Contributor Author

rbqvq commented Feb 8, 2026

@ReenigneArcher It should be fix in #4687

Actions for windows build still working:
https://github.com/rbqvq/Sunshine/actions/runs/21800375818

rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
rbqvq added a commit to rbqvq/Sunshine that referenced this pull request Feb 8, 2026
Use actions/setup-node instead of MSYS2.

Revert commit `fix(build): using @rollup/wasm-node` partial changes in LizardByte#3905

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants