-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows Arm build fixes #11546
Windows Arm build fixes #11546
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think we have anyone available to test arm and I've let this sit for a little bit now.
I'll merge it to get it out of the way.
Took me a while to get this compiled. Compiles on a Lenovo Yoga Slim 7x running a Snapdragon Elite CPU on Windows 11 ARM. I first had to:
After everything compiled got the following error on run:
|
Are you building using MSBuild or CMake? |
MSBuild |
@TheLastRar Got past that error but still had more
on this line (last line):
To make sure my configuration wasn't messed up I verified I was able to run the x64 version just fine. |
Can you copy the contents of Edit: and if that fails, can you provide a stacktrace |
Copying over from .\bin\resources had no effect. Here's the stack trace when trying to run a game:
|
Can you provide a pcss2 log file of both the working x64 version and the non-working arm build |
The x64 working copy is actually the installed released app in a different folder. There is nothing in the logs folder. But if I run the ARM emulator outside of the debugger and try to run a game I do get a crash dump, which I've attached. |
Regarding The minidump, I will need the exact binaries that generated the dump, as you had built these, I will need you to also upload these before I can inspect the minidump Regarding the logs files I asked for, I had forgetting this is off by default. |
I've attached the binaries and log. |
A quick scan though the log shows it fails to find the Upon failing to load this file, PCSX2 aborts starting, but ends up crashing as a result. Can you verify that |
One fix I applied was changing the project configuration for Debug and Release on ARM64 so it matches the x64 build configuration, everything checked to build except the vixl and pcx2-gsrunner projects. Having issues building in release mode, have a list of about 17 errors. One interesting one is:
Edit: Copied the file from the x64 build ("obj-pcsx2-qt-x64-Debug") and that seemed to let me build. Edit 2: Release mode runs, but still much slower than emulated x64 build and very unstable and graphically glitchy, froze soon after splash screen. Edit 3: Also got a message on startup about missing "patches.zip". I copied that over from resources folder on an installed release stable version resources folder to resolve. |
I thought vixl was required for Arm
I'm not able to repo. When I cross compile for arm, that file is generated correctly when building
Currently we don't have Arm recompilers for EE/VU or IOP, so these fall back to the (very) slow interpreters. As for the graphical glitches, the Arm build will default to DirectX12, while the x64 might default to Vulkan or OpenGL
|
Thanks, I changed the build configuration for ARM64 debug and release with that updated information. You should probably do the same on your end.
Attached, hope it helps. Build_log_08_03_2024_1125PM.txt
Thanks, good to know. |
For some reason, your build isn't running the In the build log you should see
I'm unsure as to why you end up skipping that... The We include pcsx2/pcsx2-qt/pcsx2-qt.vcxproj Lines 220 to 224 in 8cd1285
So this target should run when building pcsx2-qt |
resources\resources.qrc seems to be missing, got removed somehow. I resynced/reverted my git to restore it. The x64 .exe installed version (not built from local source) uses DirectX 12 and runs 60fps, the new Prism x86/x64 emulator in Windows 11 ARM is pretty capable. The source seems to be based off 1.7, while the installed binary is 2.0.2, I wonder if that is making a difference too. |
Nice to know that the Prism emulator is up to the task. The source on the repo should match (or rather it's a few commits ahead) the binary, useful to know that PCSX2 x64 also picks DirectX 12 I think it's probably just the fact that our Arm code is incomplete is what's giving you issues. |
That being said, are you still getting this issue #11546 (comment) with a debug arm build? If so can you get me a stacktrace for it |
Still seeing the issue, I've attached the crash dump |
Thank you Turns out this crash is a compiler bug in clang-cl |
Thanks, using that information I was able to resolve it by: Downloading/installing LLVM 18.1.8 ARM edition (LLVM-18.1.8-woa64.exe) from: Then created a "Directory.build.props" in the same folder as the solution file and pointed it to the install location of LLVM as described here: |
Doubling back to this, which game froze for you after the splash screen? can you provide a log file for it |
The behavior seems different now, now it just gets stuck after the Sony splash screen on God of War at 2 fps. I've waited several minutes and nothing changes. I've attached the log and a link to a video recording of what I described, at the end of the video I also show the x64 release installed version running at 60fps. |
Does vulkan work at all? |
Both Vulkan and OpenGL are not available options in the renderer drop down in the ARM64 version, however both are available in the x64 installed release version (v2.02). |
At least in x64 I'd suggest using them. |
Just tried Vulkan on the x64 version, it crashes after Sony logo, OpenGL seems to work. Edit: OpenGL works but Directx12 is for sure more performant, get better fps with increased texture resolution. |
Given the fact that the arm builds are stuck using the interpreters it would be running very slow Edit: A Devel or Release build will be a little bit faster, still not near the x64 build, but faster for testing. |
If you can post an emulog when using OpenGL I'd like to see that. |
Here's the log from the x64 v2.02 release version configured with OpenGL. |
If you could you can join our discord server it'll make this easier to do |
I joined, what would you like me to do? |
Send a message in dev and we can continue this there |
Description of Changes
Fixes incorrect paths for arm files cpuinfo vcxproj
Update Windows ARM dependencies to be inline with Windows x64
Remove hard-coded version in both x64 and Arm64 dependency build script
Add bin-arm64 to gitignore
Rationale behind Changes
Spotted the error in the cpuinfo project file
Other issues where corrected when I attempted to cross compile
Suggested Testing Steps
Test windows Arm64 build
Note
I don't have any Arm64, so while I can build for Arm, I can't test the resulting build.
Don't expect much Arm64 work from me.