Skip to content

Test/windows/arm64 with wix#4661

Draft
ReenigneArcher wants to merge 23 commits intomasterfrom
test/windows/arm64-with-wix
Draft

Test/windows/arm64 with wix#4661
ReenigneArcher wants to merge 23 commits intomasterfrom
test/windows/arm64-with-wix

Conversation

@ReenigneArcher
Copy link
Member

Description

Screenshot

Issues Fixed or Closed

Roadmap Issues

Type of Change

  • feat: New feature (non-breaking change which adds functionality)
  • fix: Bug fix (non-breaking change which fixes an issue)
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.)
  • refactor: Code change that neither fixes a bug nor adds a feature
  • perf: Code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit
  • BREAKING CHANGE: Introduces a breaking change (can be combined with any type above)

Checklist

  • Code follows the style guidelines of this project
  • Code has been self-reviewed
  • Code has been commented, particularly in hard-to-understand areas
  • Code docstring/documentation-blocks for new or existing methods/components have been added or updated
  • Unit tests have been added or updated for any new or modified functionality

AI Usage

  • None: No AI tools were used in creating this PR
  • Light: AI provided minor assistance (formatting, simple suggestions)
  • Moderate: AI helped with code generation or debugging specific parts
  • Heavy: AI generated most or all of the code changes

rbqvq and others added 15 commits February 3, 2026 18:50
MinHook does not support arm64, add conditional check

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
Steam Audio Driver unavailable on Windows Arm64, add check

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Use ::std:: fully qualified namespace in template functions to avoid
  ambiguity with clang namespace resolution.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Co-authored-by: Ricky8955555 <rkmiao@duck.com>
Clang does not have libatomic which used by googletest, So disable it

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Add windows arm64 documents.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
nsis does not support arm64, so we cannot create an installer at this time

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
Add missing TOSTRING for ICON

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Add vendor ID detection for Qualcomm Adreno GPUs:
- 0x4D4F4351: "QCOM" in ASCII (reversed as little-endian)
- 0x5143: Alternate Qualcomm vendor ID

When a Qualcomm GPU is detected, only Media Foundation encoders
(h264_mf, hevc_mf, av1_mf) are considered compatible, as Qualcomm
doesn't support NVENC, AMF, or QSV encoder APIs.
Add Windows Media Foundation hardware encoder support for platforms
that don't have NVENC, AMF, or QSV (primarily Qualcomm Snapdragon).

Encoders added:
- h264_mf: H.264 via Media Foundation
- hevc_mf: HEVC via Media Foundation
- av1_mf: AV1 via Media Foundation

Configuration:
- Uses D3D11VA hardware device for GPU texture input
- CBR rate control with display_remoting scenario for streaming
- Only supports SDR 4:2:0 8-bit (Qualcomm MF encoder limitation)
- Fixed GOP size of 120 frames since MF doesn't support on-demand IDR

The mediafoundation encoder is probed after quicksync and amdvce,
serving as a fallback for ARM64 Windows devices.
…llup

- Add `@rollup/wasm-node` to devDependencies.
- Use npm overrides to force Rollup to use the WASM version.
- Fixes "Node-API symbol not loaded" and "parseAsync is not a function" errors specifically occurring in MSYS2 ClangARM64 environment.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Replaces custom-actions.wxs and custom-shortcuts.wxs with sunshine-installer.wxs, consolidating custom actions and shortcut definitions. Adds patch.xml for WiX patching. Updates windows_wix.cmake to use new resource files, install the WiX Util extension, and adjust build directories. This streamlines and modernizes the Windows installer packaging process.
Remove CA_GamepadInstall and CA_GamepadUninstall custom actions from the WiX installer and update the InstallExecuteSequence accordingly. ServiceInstall is now run after FirewallAdd, and RestoreNvPrefs now runs after ServiceUninstall. This removes the PowerShell-based gamepad install/uninstall steps and fixes the action ordering to avoid references to the removed actions.
Previously CPACK_WIX_ARCHITECTURE was hard-coded to x64. This change checks CMAKE_SYSTEM_PROCESSOR and sets CPACK_WIX_ARCHITECTURE to arm64 when building on ARM64, falling back to x64 otherwise. Enables correct WiX installer architecture for ARM64 Windows builds.
# Conflicts:
#	.github/workflows/ci-windows.yml
#	docs/building.md
@codecov
Copy link

codecov bot commented Feb 4, 2026

Bundle Report

Bundle size has no change ✅

@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch from ce9a27c to 93e8477 Compare February 4, 2026 00:15
Update cmake/compile_definitions/windows.cmake to suppress specific GCC warnings when building for Windows ARM64. Adds a CMAKE_SYSTEM_PROCESSOR check and appends -Wno-dll-attribute-on-redeclaration and -Wno-unused-variable to SUNSHINE_COMPILE_OPTIONS to work around Boost-related compilation issues on ARM64.
@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch 2 times, most recently from 0f50a58 to 68a9af6 Compare February 4, 2026 01:16
Replace variable-length arrays with std::vector in src/platform/windows/input.cpp and src/platform/windows/misc.cpp for safety and portability. Add <vector> includes, allocate wide-character buffer with std::vector<WCHAR> and pass wide.data() to MultiByteToWideChar, and replace WSABUF VLA with std::vector<WSABUF> and use .data() for msg.lpBuffers. These changes avoid non-standard VLAs and reduce stack-allocation risks.
@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch from 68a9af6 to b08d41e Compare February 4, 2026 01:39
Delete the `#warning` emitted for non-x64 architectures in src/platform/windows/audio.cpp. This prevents spurious compiler warnings when building on other architectures; no functional change to the x64 driver subdir definition.
Delete the HMODULE dll = nullptr; declaration from src/nvenc/nvenc_d3d11_on_cuda.h. This removes an unused module handle field from the nvenc D3D11-on-CUDA wrapper to reduce unnecessary state.
@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch from 9908e07 to e64a113 Compare February 4, 2026 02:44
Add -Wno-unknown-warning-option to SUNSHINE_COMPILE_OPTIONS for CMAKE_SYSTEM_PROCESSOR=ARM64 to silence warnings from ViGEmClient; add inline comments annotating the -Wno-* flags (Boost/ViGEmClient) and remove the previous generic comment. This reduces noisy warnings when building for Windows ARM64.
@codecov
Copy link

codecov bot commented Feb 4, 2026

Codecov Report

❌ Patch coverage is 16.66667% with 15 lines in your changes missing coverage. Please review.
✅ Project coverage is 15.11%. Comparing base (66cdaf9) to head (7d2aa63).
⚠️ Report is 2 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    #4661      +/-   ##
==========================================
- Coverage   15.15%   15.11%   -0.04%     
==========================================
  Files          95       95              
  Lines       19874    19880       +6     
  Branches     9178     9193      +15     
==========================================
- Hits         3011     3004       -7     
- Misses      15001    15741     +740     
+ Partials     1862     1135     -727     
Flag Coverage Δ
Archlinux 11.20% <11.11%> (-0.01%) ⬇️
FreeBSD-14.3-aarch64 ?
FreeBSD-14.3-amd64 13.23% <16.66%> (-0.02%) ⬇️
Homebrew-ubuntu-22.04 13.43% <11.11%> (-0.01%) ⬇️
Linux-AppImage 11.60% <11.11%> (-0.01%) ⬇️
Windows-AMD64 13.48% <6.66%> (-0.01%) ⬇️

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%> (-0.02%) ⬇️
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.21% <37.50%> (-0.23%) ⬇️

... and 40 files with indirect coverage changes

@rbqvq

This comment was marked as resolved.

Install NSIS dependency and update Windows packaging step to produce NSIS installers, WiX MSIs, and portable ZIPs. Adds mingw-w64-*-nsis to the dependencies, exposes MSYSTEM to the Package step, and switches the NSIS generation check to use MSYSTEM=="ucrt64" (replacing the previous RUNNER_ARCH conditional). Artifacts are moved into an artifacts directory with distinct names for installer (.exe/.msi) and portable (.zip) builds.
@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch 8 times, most recently from a1e10fa to 8e4fd6e Compare February 5, 2026 00:37
Add a CI step to dump npm debug logs (always run) to aid troubleshooting install failures; pin @rollup/wasm-node to an exact version (remove caret) in package.json and the rollup override to ensure consistent dependency resolution; enable nvm_node for Debian 12 and 13 in scripts/linux_build.sh to allow Node installation via nvm on those distros.
@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch from 8e4fd6e to 304fb58 Compare February 5, 2026 01:01
@LizardByte LizardByte deleted a comment from rbqvq Feb 5, 2026
@LizardByte LizardByte deleted a comment from rbqvq Feb 5, 2026
@LizardByte LizardByte deleted a comment from rbqvq Feb 5, 2026
@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch 5 times, most recently from 5d33fec to fad6b71 Compare February 6, 2026 03:11
@ReenigneArcher ReenigneArcher force-pushed the test/windows/arm64-with-wix branch from fad6b71 to 7d2aa63 Compare February 6, 2026 03:42
@sonarqubecloud
Copy link

sonarqubecloud bot commented Feb 6, 2026

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.

3 participants