[Feature Request] Missing Windows Arm64 build #136

Open
opened 2024-10-31 18:56:52 +00:00 by salsamexico · 5 comments
salsamexico commented 2024-10-31 18:56:52 +00:00 (Migrated from github.com)

Overview

Windows arm64 build missing

Smaller details

With new snapdragon x pcs available, it would be good to also have an arm64 release build like Linux and Mac do for Windows.

Nature of request

Testing functionality in additional platforms

Why would this feature be useful?

To provide a native build of ryujinx that doesn't have to perform an additional layer of emulation.

### Overview Windows arm64 build missing ### Smaller details With new snapdragon x pcs available, it would be good to also have an arm64 release build like Linux and Mac do for Windows. ### Nature of request Testing functionality in additional platforms ### Why would this feature be useful? To provide a native build of ryujinx that doesn't have to perform an additional layer of emulation.
extherian commented 2024-10-31 19:00:34 +00:00 (Migrated from github.com)

It's possible to compile it for ARM64, the problem is that Windows ARM devices tend to have absolutely awful graphics drivers, including ones missing support for the likes of OpenGL entirely. Personally I wouldn't count on this request being granted, but Ryujinx is easy to compile compared to other projects, so perhaps you could ask how to compile it for Windows ARM in our discord server.

It's possible to compile it for ARM64, the problem is that Windows ARM devices tend to have absolutely awful graphics drivers, including ones missing support for the likes of OpenGL entirely. Personally I wouldn't count on this request being granted, but Ryujinx is easy to compile compared to other projects, so perhaps you could ask how to compile it for Windows ARM in our discord server.
Otozinclus commented 2024-11-01 01:21:52 +00:00 (Migrated from github.com)

Windows ARM already works very well when self compiled, there is actually very little to add. You just have to deal with all kinds of Adreno driver issues and a weak GPU overall

You can self compile by downloading the Source code, going to [DownloadedZipLocation]/src/Ryujinx folder in the command prompt and executing the command "dotnet publish -c Release -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o bin". This will create a bin folder in which you somewhere find a Ryujinx.exe. You can move that anywhere now.

The issue is that FFmpeg has no official Windows Arm release and therefore does not get build, as it should, which results in many games crashing that actually run fine otherwise. To fix that you have to add a precompiled version of FFmpeg to the same folder your .exe is in

I also opened a PR with FFmpeg included already, you can just download the source code of that one and do the compile step from above

You can also get a precompiled version from my own website, if you want to, though self compiling it like above will give you the same: http://mikahintz.de/fileDownload.php

Windows ARM already works very well when self compiled, there is actually very little to add. You just have to deal with all kinds of Adreno driver issues and a weak GPU overall You can self compile by downloading the Source code, going to [DownloadedZipLocation]/src/Ryujinx folder in the command prompt and executing the command "dotnet publish -c Release -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o bin". This will create a bin folder in which you somewhere find a Ryujinx.exe. You can move that anywhere now. The issue is that FFmpeg has no official Windows Arm release and therefore does not get build, as it should, which results in many games crashing that actually run fine otherwise. To fix that you have to add a precompiled version of FFmpeg to the same folder your .exe is in I also opened a PR with FFmpeg included already, you can just download the source code of that one and do the compile step from above You can also get a precompiled version from my own website, if you want to, though self compiling it like above will give you the same: http://mikahintz.de/fileDownload.php
xrishox commented 2024-11-27 16:39:34 +00:00 (Migrated from github.com)

@Otozinclus does the snapdragon x elite suffer from driver and performance issues too or is it just the older arm laptops? I think I remember reading that when it comes to linux and macos arm it doesn't need to convert between cpu architectures since the switch is arm which is way more performant. is this also the case with the windows arm version?

@Otozinclus does the snapdragon x elite suffer from driver and performance issues too or is it just the older arm laptops? I think I remember reading that when it comes to linux and macos arm it doesn't need to convert between cpu architectures since the switch is arm which is way more performant. is this also the case with the windows arm version?
Otozinclus commented 2024-12-03 16:00:21 +00:00 (Migrated from github.com)

@Otozinclus does the snapdragon x elite suffer from driver and performance issues too or is it just the older arm laptops? I think I remember reading that when it comes to linux and macos arm it doesn't need to convert between cpu architectures since the switch is arm which is way more performant. is this also the case with the windows arm version?

Both Linux and Windows ARM use JIT and don't execute the code natively. It would be possible to do so, though nobody implemented it from the Ryujinx team and on Windows you need a Pro licence to use the Hypervisor anyway. However, JIT will work more efficiently on ARM devices than on x64 devices, as JIT got performance optimizations for ARM.

The performance issue on older Snapdragons was just the old Snapdragons being based on mobile phone chips, they were just bad performing in general, this didn't have much to do with them being snapdragons.

Does the X Elite still has driver issues? Yes, but different ones. The old Windows ARM devices only supported DirectX, not Vulkan. Ryujinx has no DirectX backend, therefore did not work, though I believe there have been unofficial ways to get Vulkan working.

The X Elite now has official Vulkan support. Therefore Ryujinx starts without any issues. However, there are in some games still driver issues, that caus graphical bugs. That has nothing to do with Ryujinx, the mobile drivers just suck on Adreno (on smartphone as well btw, same for mali). And another issue is, that Switch games are made for Nvidia GPUs. Desktop GPU architectures are architecturally different, VRAM split calls don't use up any significant performance, therefore you see them a lot in many Switch games, because why not. On mobile GPU architecture (Apple, Adreno, Mali, etc.) though, these VRAM splits can create a bottleneck for the GPU and reduce your FPS, which is why these perform worse than on paper similar Nvidia/AMD/Intel GPUs

HOWEVER:
For Ryujinx to work well on the X Elite, you need to do 2 things:

  • FFmpeg has no official version for Windows ARM. This will cause crashes in quite a lot of games, like Mario Odyssey and Mario Kart, but propably many more. Therefore you need to download a unofficial build of FFmpeg / compile it yourself. You just paste them into the folder with your Ryujinx.exe and it should work now.
  • Windows throttles the X Elite heavily with a balanced Power plan. Change it to maximum performance in the Windows settings and performance will be greatly increased. It makes a huge difference and many 3D games don't run flawlessly without it
  • There are different versions of the X Elite. The -78 has no Singlecore boost, the -80 does. The -84 and -00 have higher GPU clocks (1.5GHz instead of 1.25GHz), therefore these run the best. I personally use a -80 and I am satisfied with the performance of most games.

Note:
I made a fork (based on greems fork, everything is the same except this single patch) with the FFmpeg compiled for Windows ARM included. I also host a website, where you can download a precompiled version, bundled into a single .exe, to have a easy download available for Windows ARM you can just run instantly: http://mikahintz.de/fileDownload.php

I have made a video testing some games on the X Elite. Sadly I have tested these before figuring out how great the impact of the Windows Power Plan settings is for the X Elite. All games you see in the Video run without significant framedrops with maximum perfomance selected, except BOTW, which drops occasionally and has short freezes. Yet, in the video some games drop FPS, because of the balanced powerplan. So keep that in mind: https://www.youtube.com/watch?v=EBjb9zjnqCw

> @Otozinclus does the snapdragon x elite suffer from driver and performance issues too or is it just the older arm laptops? I think I remember reading that when it comes to linux and macos arm it doesn't need to convert between cpu architectures since the switch is arm which is way more performant. is this also the case with the windows arm version? Both Linux and Windows ARM use JIT and don't execute the code natively. It would be possible to do so, though nobody implemented it from the Ryujinx team and on Windows you need a Pro licence to use the Hypervisor anyway. However, JIT will work more efficiently on ARM devices than on x64 devices, as JIT got performance optimizations for ARM. The performance issue on older Snapdragons was just the old Snapdragons being based on mobile phone chips, they were just bad performing in general, this didn't have much to do with them being snapdragons. Does the X Elite still has driver issues? Yes, but different ones. The old Windows ARM devices only supported DirectX, not Vulkan. Ryujinx has no DirectX backend, therefore did not work, though I believe there have been unofficial ways to get Vulkan working. The X Elite now has official Vulkan support. Therefore Ryujinx starts without any issues. However, there are in some games still driver issues, that caus graphical bugs. That has nothing to do with Ryujinx, the mobile drivers just suck on Adreno (on smartphone as well btw, same for mali). And another issue is, that Switch games are made for Nvidia GPUs. Desktop GPU architectures are architecturally different, VRAM split calls don't use up any significant performance, therefore you see them a lot in many Switch games, because why not. On mobile GPU architecture (Apple, Adreno, Mali, etc.) though, these VRAM splits can create a bottleneck for the GPU and reduce your FPS, which is why these perform worse than on paper similar Nvidia/AMD/Intel GPUs HOWEVER: For Ryujinx to work well on the X Elite, you need to do 2 things: - FFmpeg has no official version for Windows ARM. This will cause crashes in quite a lot of games, like Mario Odyssey and Mario Kart, but propably many more. Therefore you need to download a unofficial build of FFmpeg / compile it yourself. You just paste them into the folder with your Ryujinx.exe and it should work now. - Windows throttles the X Elite heavily with a balanced Power plan. Change it to maximum performance in the Windows settings and performance will be greatly increased. It makes a huge difference and many 3D games don't run flawlessly without it - There are different versions of the X Elite. The -78 has no Singlecore boost, the -80 does. The -84 and -00 have higher GPU clocks (1.5GHz instead of 1.25GHz), therefore these run the best. I personally use a -80 and I am satisfied with the performance of most games. Note: I made a fork (based on greems fork, everything is the same except this single patch) with the FFmpeg compiled for Windows ARM included. I also host a website, where you can download a precompiled version, bundled into a single .exe, to have a easy download available for Windows ARM you can just run instantly: http://mikahintz.de/fileDownload.php I have made a video testing some games on the X Elite. Sadly I have tested these before figuring out how great the impact of the Windows Power Plan settings is for the X Elite. All games you see in the Video run without significant framedrops with maximum perfomance selected, except BOTW, which drops occasionally and has short freezes. Yet, in the video some games drop FPS, because of the balanced powerplan. So keep that in mind: https://www.youtube.com/watch?v=EBjb9zjnqCw
itsb commented 2025-01-16 17:52:52 +00:00 (Migrated from github.com)

Has anyone got this working on X Plus SOC, is the lower tier Adreno X1-45 GPU too weak vs X1-85 in X Elite? It's crashing/freezing on my X Plus notebook with X1P-42-100 SOC.

Has anyone got this working on X Plus SOC, is the lower tier Adreno X1-45 GPU too weak vs X1-85 in X Elite? It's crashing/freezing on my X Plus notebook with X1P-42-100 SOC.
Sign in to join this conversation.
No Milestone
No project
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MeloNX/Ryujinx-ryubing#136
No description provided.