Jul 26, 2021
Qualcomm products mentioned within this post are offered by Qualcomm Technologies, Inc. and/or its subsidiaries.
It’s easier than you think to start developing ARM64 apps for Windows on Snapdragon, and it’s getting easier all the time.
Think of Windows on Snapdragon as a development cornucopia:
- The long battery life and high performance of mobile processors like our Snapdragon compute platform
- The ubiquity of Windows 10/11 applications
- The 5G/LTE mobile computing pedigree of the ARM architecture
- Distributed computing utilizing Snapdragon hardware engines like AI (DSP) and camera ISP (Qualcomm Spectra ISP)
OEMs like Acer, HP, Lenovo, Microsoft, and Samsung make Snapdragon based, Always On Always Connected PCs that run Windows 10. And Microsoft has been publishing loads of procedures and learning resources on developing for ARM.
That means the only thing that developers like you need are the tools, and you don’t even need to wait for those anymore.
You mean I can start porting and developing apps for ARM right now?
Yes, I do mean that.
Here’s the thing. A lot of developers aren’t even aware that the standard Visual Studio toolchain works on ARM. In fact, it has worked since Visual Studio 2017 version 15.9. The tools and libraries needed to compile for ARM are already built into the Integrated Development Environment (IDE), and .NET apps can now run natively on Windows ARM64.
The tools go beyond supporting development of consumer and enterprise applications. You could say they’ve achieved escape velocity: They now support 3D game development, as we showed in our previous Windows 10 ARM64 support for Unreal Engine blog post.
A batch of native, open-source ARM64 tools
There are a number of great tools available to help developers with Windows on Snapdragon, and we maintain a page of Windows on Snapdragon developer resources that shows commonly used, open-source tools with native, ARM64 versions:
- Compilers like LLVM for Windows on ARM, including linker and compiler libraries
- Frameworks like Chromium for web browsing, and .NET 5.0 including Forms and WPF
- Editors and libraries like Visual Studio Code, WiX for installers, Electron for cross-platform desktop apps and Windows Subsystem for Linux 2 (WSL 2) to run a complete Linux kernel virtually
We’ve chosen to highlight the kinds of tools that can help you have what you need to create new apps for ARM and port existing apps. With so much momentum behind the architecture, you won’t have to work around unavailable components or branch your code to get your apps to run. The tools are there, and they are super helpful.
You should see performance benefits when you use some of the tools for Windows on Snapdragon development, too. FFmpeg, for example, is a cross-platform multimedia framework designed to record, convert and stream audio and video. It can use hardware acceleration from Qualcomm Technologies, Inc. (QTI), so if you merely package FFmpeg into your app, you’re likely to see boosts in performance.
Approaching ARM development
As Microsoft points out, “ARM64 apps run natively without any emulation, while x86 apps run under emulation. And support for x64 is planned for later this year.”
We have noticed that some software vendors don’t require any code changes when porting to ARM64. If that’s not the case in your situation, you can always undergo some recoding (depending on architecture). For example, simple applications and basic functions may only need a simple recompile, but we’ve seen other software developers take a stepped approach to porting. If, for example, your product is a conferencing application and your target is Windows on Snapdragon, you might approach the port in three phases:
- Get the core features of your application optimized.
- Use accelerators from QTI to optimize performance on Windows on Snapdragon devices.
- Bring unique AI and mixed reality experiences (e.g., eye gaze) to the edge given the power and performance of Windows on Snapdragon devices.
Until recently, dependency on third-party components may have been a challenge for developers. But in their Windows 11 announcement, Microsoft mentioned using the new ARM64 Emulation Compatible ABI (ARM64EC) to mix native ARM and emulated x64 code in the same process or module. So, even if your application depends on or loads x64 plugins that you don’t control, you can still optimize it for Windows on Snapdragon.
How can you get support?
The opportunity with Windows on Snapdragon is really booming as we have seen a great deal of interest from our ecosystem. We’ve helped our friends at Adobe, Zoom, Cisco, Citrix, and Sophos (to name a few) with their Windows on Snapdragon applications, so we think now is an optimal time for other developers to do the same.
If you need support, have a look at our Developer Resources page for Windows on Snapdragon. You’ll find the open-source tools I mentioned above, documentation from Microsoft and walkthroughs from QTI on setting up Visual Studio for ARM64 development.
For future development, stay tuned for the Snapdragon Developer Kit, scheduled to be available from Microsoft soon. It can be used for testing the applications you port to Windows on Snapdragon.
Additional support can be accessed today with our friends at Microsoft App Assure. They provide a wealth of information, and they are a great resource to help with any concerns you may have around app compatibility with Windows on Snapdragon.