From 7664f8cde9f8fe7ed0347e098086e1227aef8bdc Mon Sep 17 00:00:00 2001 From: Keaton Date: Thu, 13 Mar 2025 18:36:57 -0500 Subject: [PATCH] update FFmpeg to 6.1.2 & Windows on ARM support (#702) As stated in the title, win-arm64 (Windows 11 ARM) has been added to the workflows, so these builds should automatically compile for this PR and all other releases going forward. Also updated the FFmpeg runtimes from 5.0.3 to 6.1.2. macOS (x64/arm64) is _currently_ excluded from the update until a proper cross-compiling environment can be set up for these architectures. Windows 11 ARM users, please test the win-arm64 build for any issues. --------- Co-authored-by: Evan Husted --- .github/workflows/build.yml | 1 + .github/workflows/canary.yml | 2 ++ .github/workflows/release.yml | 2 ++ Directory.Packages.props | 6 +++--- .../Ryujinx.Audio.Backends.SoundIo.csproj | 8 ++++---- .../Native/FFmpegApi.cs | 4 ++-- src/Ryujinx/Ryujinx.csproj | 16 +++++++++++----- 7 files changed, 25 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0472fd5f7..a70dcc6f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,7 @@ jobs: configuration: [Debug, Release] platform: - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } + - { name: win-arm64, os: windows-latest, zip_os_name: win_arm64 } - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } - { name: osx-x64, os: macos-13, zip_os_name: osx_x64 } diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index fbd76a2d8..d92733723 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -62,6 +62,7 @@ jobs: | Platform | Artifact | |--|--| | Windows 64-bit | [Canary Windows Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-win_x64.zip) | + | Windows ARM 64-bit | [Canary Windows Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-win_arm64.zip) | | Linux 64-bit | [Canary Linux Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz) | | Linux ARM 64-bit | [Canary Linux ARM Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz) | | macOS | [Canary macOS Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz) | @@ -79,6 +80,7 @@ jobs: matrix: platform: - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } + - { name: win-arm64, os: windows-latest, zip_os_name: win_arm64 } - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 69e4dc216..c8465625a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -66,6 +66,7 @@ jobs: matrix: platform: - { name: win-x64, os: windows-latest, zip_os_name: win_x64 } + - { name: win-arm64, os: windows-latest, zip_os_name: win_arm64 } - { name: linux-x64, os: ubuntu-latest, zip_os_name: linux_x64 } - { name: linux-arm64, os: ubuntu-latest, zip_os_name: linux_arm64 } steps: @@ -117,6 +118,7 @@ jobs: if: matrix.platform.os == 'ubuntu-latest' run: | pushd publish + rm libarmeilleure-jitsupport.dylib chmod +x Ryujinx.sh Ryujinx tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz ../publish popd diff --git a/Directory.Packages.props b/Directory.Packages.props index 62a642374..adf48c1de 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -39,7 +39,7 @@ - + @@ -53,8 +53,8 @@ - - + + diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj b/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj index d06f66181..911401338 100644 --- a/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj +++ b/src/Ryujinx.Audio.Backends.SoundIo/Ryujinx.Audio.Backends.SoundIo.csproj @@ -2,7 +2,7 @@ true - win-x64;osx-x64;linux-x64 + win-x64;osx-x64;linux-x64;win-arm64;osx-arm64;linux-arm64 $(DefaultItemExcludes);._* @@ -11,15 +11,15 @@ - + PreserveNewest libsoundio.dll - + PreserveNewest libsoundio.dylib - + PreserveNewest libsoundio.so diff --git a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs index c31d3034e..1134b0c6b 100644 --- a/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs +++ b/src/Ryujinx.Graphics.Nvdec.FFmpeg/Native/FFmpegApi.cs @@ -12,8 +12,8 @@ namespace Ryujinx.Graphics.Nvdec.FFmpeg.Native private static readonly Dictionary _librariesWhitelist = new() { - { AvCodecLibraryName, (58, 59) }, - { AvUtilLibraryName, (56, 57) }, + { AvCodecLibraryName, (58, 61) }, + { AvUtilLibraryName, (56, 59) }, }; private static string FormatLibraryNameForCurrentOs(string libraryName, int version) diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj index 1f9642466..1e069329b 100644 --- a/src/Ryujinx/Ryujinx.csproj +++ b/src/Ryujinx/Ryujinx.csproj @@ -1,6 +1,6 @@ - win-x64;osx-x64;linux-x64 + win-x64;osx-x64;linux-x64;win-arm64;osx-arm64;linux-arm64; Exe true 1.0.0-dirty @@ -29,12 +29,18 @@ partial + + true + false + + + true @@ -57,8 +63,8 @@ - - + + @@ -67,7 +73,7 @@ - + @@ -84,7 +90,7 @@ - + Always alsoft.ini