From 7664f8cde9f8fe7ed0347e098086e1227aef8bdc Mon Sep 17 00:00:00 2001 From: Keaton Date: Thu, 13 Mar 2025 18:36:57 -0500 Subject: [PATCH 1/4] 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 From d857106c28a6becd1bd2c200f957bc056638c655 Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Fri, 14 Mar 2025 05:13:13 -0500 Subject: [PATCH 2/4] misc: chore: base version bump --- .github/workflows/canary.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index d92733723..73f62b1fa 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -19,7 +19,7 @@ concurrency: release env: POWERSHELL_TELEMETRY_OPTOUT: 1 DOTNET_CLI_TELEMETRY_OPTOUT: 1 - RYUJINX_BASE_VERSION: "1.2" + RYUJINX_BASE_VERSION: "1.3" RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "canary" RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: "Ryubing" RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO: "Ryujinx" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8465625a..ad74fe1e7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ concurrency: release env: POWERSHELL_TELEMETRY_OPTOUT: 1 DOTNET_CLI_TELEMETRY_OPTOUT: 1 - RYUJINX_BASE_VERSION: "1.2" + RYUJINX_BASE_VERSION: "1.3" RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "release" RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: "Ryubing" RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO: "Ryujinx" From eb075af06f8890b2f11ae1e26af3f987b6fcdd97 Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Fri, 14 Mar 2025 05:19:43 -0500 Subject: [PATCH 3/4] CI: chore: some fixups for not having a github source repo anymore --- .github/workflows/canary.yml | 10 +++------- .github/workflows/release.yml | 6 +----- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 73f62b1fa..955816015 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -44,7 +44,7 @@ jobs: script: | github.rest.git.createRef({ owner: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}", - repo: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}", + repo: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}", ref: 'refs/tags/Canary-${{ steps.version_info.outputs.build_version }}', sha: context.sha }) @@ -57,7 +57,7 @@ jobs: body: | # Canary builds: - These builds are experimental and may sometimes not work, use [regular builds](https://github.com/${{ github.repository }}/releases/latest) instead if that sounds like something you don't want to deal with. + These builds are experimental and may sometimes not work, use [regular builds](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/latest) instead if that sounds like something you don't want to deal with. | Platform | Artifact | |--|--| @@ -66,8 +66,6 @@ jobs: | 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) | - - **Full Changelog**: https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }} omitBodyDuringUpdate: true owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} @@ -185,7 +183,7 @@ jobs: body: | # Canary builds: - These builds are experimental and may sometimes not work, use [regular builds](https://github.com/${{ github.repository }}/releases/latest) instead if that sounds like something you don't want to deal with. + These builds are experimental and may sometimes not work, use [regular builds](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/latest) instead if that sounds like something you don't want to deal with. | Platform | Artifact | |--|--| @@ -193,8 +191,6 @@ jobs: | 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) | - - **Full Changelog**: https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }} omitBodyDuringUpdate: true allowUpdates: true replacesArtifacts: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ad74fe1e7..60752d96c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,7 +34,7 @@ jobs: script: | github.rest.git.createRef({ owner: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}", - repo: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}", + repo: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}", ref: 'refs/tags/${{ steps.version_info.outputs.build_version }}', sha: context.sha }) @@ -52,8 +52,6 @@ jobs: | Linux 64-bit | [Stable 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-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz) | | Linux ARM 64-bit | [Stable 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-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz) | | macOS | [Stable 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-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz) | - - **Full Changelog**: https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }} omitBodyDuringUpdate: true owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }} repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }} @@ -175,8 +173,6 @@ jobs: | Linux 64-bit | [Stable 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-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz) | | Linux ARM 64-bit | [Stable 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-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz) | | macOS | [Stable 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-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz) | - - **Full Changelog**: https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_SOURCE_REPO }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }} omitBodyDuringUpdate: true allowUpdates: true replacesArtifacts: true From 350b1fc01336ea0b2199a2cfa88389cc10130ef3 Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Fri, 14 Mar 2025 05:22:22 -0500 Subject: [PATCH 4/4] CI: misc: The tags are never explicitly made on the release channel repo and yet they're there. Maybe we don't need to make it initially? --- .github/workflows/canary.yml | 11 ----------- .github/workflows/release.yml | 11 ----------- 2 files changed, 22 deletions(-) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 955816015..aeac1c4a7 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -38,17 +38,6 @@ jobs: echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT shell: bash - - name: Create tag - uses: actions/github-script@v7 - with: - script: | - github.rest.git.createRef({ - owner: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}", - repo: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}", - ref: 'refs/tags/Canary-${{ steps.version_info.outputs.build_version }}', - sha: context.sha - }) - - name: Create release uses: ncipollo/release-action@v1 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 60752d96c..bb2a44131 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,17 +28,6 @@ jobs: echo "prev_build_version=${{ env.RYUJINX_BASE_VERSION }}.$((${{ github.run_number }} - 1))" >> $GITHUB_OUTPUT shell: bash - - name: Create tag - uses: actions/github-script@v7 - with: - script: | - github.rest.git.createRef({ - owner: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}", - repo: "${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}", - ref: 'refs/tags/${{ steps.version_info.outputs.build_version }}', - sha: context.sha - }) - - name: Create release uses: ncipollo/release-action@v1 with: