godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.08k stars 69 forks source link

Add official Windows ARM support and export templates #2408

Closed anonimo82 closed 1 day ago

anonimo82 commented 3 years ago

Describe the project you are working on

I'm not working on a project, but I would

Describe the problem or limitation you are having in your project

I'd like to use Godot in Windows on Arm

Describe the feature / enhancement and how it helps to overcome the problem or limitation

AFAIK, it's just a matter of building Godot targeting Arm64 Windows architecture

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

I really have no clue

If this enhancement will not be used often, can it be worked around with a few lines of script?

No

Is there a reason why this should be core and not an add-on in the asset library?

I guess the reason is compatibility

Calinou commented 3 years ago

See also #988.

Unfortunately, getting Godot to run on Windows on ARM isn't as easy as other platforms. The main difficulty comes from rendering. Windows on ARM doesn't support OpenGL at all, so you have to use a translation layer provided by Microsoft.

Edit (Feburary 2024): Now that ANGLE is integrated in Godot and a Direct3D 12 driver is provided for the Forward+ and Mobile rendering methods, a Windows ARM port is much more viable.

baifang commented 3 years ago

Actually there is a graphic context translator, angle (https://github.com/google/angle) developed google. It can fully support translation from OpenGL ES to DirectX 11 on Windows.

zjw1918 commented 1 month ago

Any progress? It's excited to see more games running on Win arm.

AThousandShips commented 1 month ago

@zjw1918 Please don't bump without contributing significant new information. Use the :+1: reaction button on the first post instead.

bogdanbabos commented 3 weeks ago

With the rise of the new ARM64 windows machines, I think this is more relevant than ever. Godot does already support Linux ARM64, Android ARM64 and Apple Silicon. It's only natural this should be the next step.

bogdanbabos commented 2 weeks ago

With the rise of the new ARM64 windows machines, I think this is more relevant than ever. Godot does already support Linux ARM64, Android ARM64 and Apple Silicon. It's only natural this should be the next step.

I can help test as well, I have a Snapdragon X Elite Windows laptop.

Calinou commented 2 weeks ago

@bogdanbabos In the future, please use the Edit button (located behind the icon in the top-right corner of your comments) instead of multi-posting.

bogdanbabos commented 2 weeks ago

Edit (Feburary 2024): Now that ANGLE is integrated in Godot and a Direct3D 12 driver is provided for the Forward+ and Mobile rendering methods, a Windows ARM port is much more viable.

@Calinou Any word on whether or not we are getting an Windows ARM64 version of Godot?

Calinou commented 2 weeks ago

@Calinou Any word on whether or not we are getting an Windows ARM64 version of Godot?

It will surely happen at some point, but we don't know when. Godot's master branch should already build for Windows ARM64, but we need to modify the build containers to compile those binaries and distribute them in ZIP archives (and the export templates TPZ).

Supporting C# in Windows ARM64 builds will also prove challenging as per https://github.com/godotengine/godot/issues/91021.

gregbug commented 1 week ago

i can also help test as well, I have a Snapdragon X Elite Windows laptop. please consider to port on win arm64 please. i already had compiled godot 4.3 beta 3 for win11 arm64 and works fine if i start with godot.windows.editor.arm64.exe --rendering-driver vulkan

otherwise I get this error:

Godot Engine v4.3.beta.custom_build.97b8ad1af (2024-07-11 21:17:06 UTC) - https://godotengine.org ERROR: Can't load EGL. at: (drivers\egl\egl_manager.cpp:360) ERROR: Unable to create DisplayServer, all display drivers failed. Use "--headless" command line argument to run the engine in headless mode if this is desired (e.g. for continuous integ. at: Main::setup2 (main\main.cpp:2758) ERROR: BUG: Unreferenced static string to 0: TextServerDummy at: StringName::unref (core\string\string_name.cpp:129)

Calinou commented 1 week ago

otherwise I get this error:

Is the OpenGL support package installed? It should be listed in Add/Remove Programs if I'm not mistaken.

ERROR: Can't load EGL. at: (drivers\egl\egl_manager.cpp:360)

I'm surprised the EGL driver even attempts to start, considering the current implementation is Linux-only.

gregbug commented 1 week ago

OpenGL support package

yes is correctly installed.

Screenshot 2024-07-19 014421

bruvzg commented 1 week ago

ERROR: Can't load EGL. at: (drivers\egl\egl_manager.cpp:360)

Since most ARM64 Windows config do not have functional desktop OpenGL, ARM64 builds of Godot are currently configured to automatically switch to ANGLE without trying to load native GL, so you should build it with ANGLE libs to enable OpenGL renderer. Static libs can be downloaded from https://github.com/godotengine/godot-angle-static and include into Godot build by adding angle_libs=PATH_TO_EXTRACTED_ANLGE_STATIC_LIBS to the build command.

gregbug commented 1 week ago

ERROR: Can't load EGL. at: (drivers\egl\egl_manager.cpp:360)

Since most ARM64 Windows config do not have functional desktop OpenGL, ARM64 builds of Godot are currently configured to automatically switch to ANGLE without trying to load native GL, so you should build it with ANGLE libs to enable OpenGL renderer. Static libs can be downloaded from https://github.com/godotengine/godot-angle-static and include into Godot build by adding angle_libs=PATH_TO_EXTRACTED_ANLGE_STATIC_LIBS to the build command.

wow thanks! recompiled godot 4.3 beta 3 and linked angle-libs arm64 windows and now godot start with no error and also work opengl compatibility mode!!!!

hope this will be officially as soon as possible!

54pkp commented 2 days ago

ERROR: Can't load EGL. at: (drivers\egl\egl_manager.cpp:360)

Since most ARM64 Windows config do not have functional desktop OpenGL, ARM64 builds of Godot are currently configured to automatically switch to ANGLE without trying to load native GL, so you should build it with ANGLE libs to enable OpenGL renderer. Static libs can be downloaded from https://github.com/godotengine/godot-angle-static and include into Godot build by adding angle_libs=PATH_TO_EXTRACTED_ANLGE_STATIC_LIBS to the build command.

wow thanks! recompiled godot 4.3 beta 3 and linked angle-libs arm64 windows and now godot start with no error and also work opengl compatibility mode!!!!

hope this will be officially as soon as possible!

I'd love to use it ahead of time, but I lack some compilation-related knowledge, can you open a fork on github to share your compiled arm version of godot?Thanks!!!

akien-mga commented 1 day ago

Windows ARM64 is now officially supported as of 4.3 RC 1: https://godotengine.org/article/release-candidate-godot-4-3-rc-1/