Open adamthole opened 2 years ago
@adamthole thank you for your report, we are looking into it.
@adamthole, for now we only support ARM on UWP / Hololens platform. However, your error is on bullet and this library is working on ARM, so as a work around you could try one of the following:
I've added this as a feature request in our roadmap.
Thank you for the information. I tried publishing my actual project as ARM (which does not use the bullet library) and when I ran it I didn't get an error, but the main WPF window never showed and it just kept using more and more memory in the background. I let it run for a while, but it never ended up showing up. I'm not sure if that is helpful, but unfortunately I'm not sure how to find out what is actually going on.
I edited the Evergine.HLSLEverywhere.dll.config file, as it didn't have an ARM64 entry. I may have edited it wrong, I'm not sure if that would cause this issue or not. Here is the line I added:
<dllmap os="windows" cpu="arm64" dll="ShaderConductorWrapper.dll" target="runtimes/win-arm64/native/ShaderConductorWrapper.dll"/>
@adamthole could you provide a sample so we can reproduce the issue?
@emepetres Yes, I can provide a sample. I redid everything using the UIWindowsSystems demo (and the latest version of Evergine). I removed the Evergine.Bullet reference and I added the publish profile I am using to publish my win-arm64 test version. The behavior is different than above, but still not working. You can find my fork here: https://github.com/adamthole/UIWindowSystemsDemo.
Steps to reproduce:
C:\win-arm64>dotnet UIWindowSystemsDemo.Wpf.dll Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object. at Evergine.DirectX11.DX11ComputePipelineState..ctor(DX11GraphicsContext context, ComputePipelineDescription& description) at Evergine.DirectX11.DX11ResourceFactory.CreateComputePipelineInternal(ComputePipelineDescription& description) at Evergine.Common.Graphics.ResourceFactory.CreateComputePipeline(ComputePipelineDescription& description) at Evergine.Framework.Graphics.ComputeTask.PrepareComputeTask(String passName) at Evergine.Framework.Graphics.ComputeTask.Run(CommandBuffer computeCommandBuffer, UInt32 groupCountX, UInt32 groupCountY, UInt32 groupCountZ, String pass) at Evergine.Framework.Graphics.ComputeTask.Run(UInt32 groupCountX, UInt32 groupCountY, UInt32 groupCountZ, String pass) at Evergine.Framework.Graphics.ComputeTaskDecorator.Run(UInt32 groupCountX, UInt32 groupCountY, UInt32 groupCountZ, String pass) at Evergine.Components.Environment.AtmosphereController.ComputeAtmosphereTextureUpdater.Update() at Evergine.Components.Environment.AtmosphereController.OnAttached() at Evergine.Framework.AttachableObject.Attach() at Evergine.Framework.Entity.OnAttached() at Evergine.Framework.AttachableObject.Attach() at Evergine.Framework.Managers.EntityManager.InternalActivateEntity(Entity entity) at Evergine.Framework.Managers.EntityManager.OnActivated() at Evergine.Framework.AttachableObject.Activate() at Evergine.Framework.Managers.SceneManagers.ActivateManagers() at Evergine.Framework.Scene.Initialize() at Evergine.Framework.Services.ScreenContextManager.InitializeScreenContext(ScreenContext context) at Evergine.Framework.Services.ScreenContextManager.ToExecute(ScreenContext nextContext, ScreenTransition transition, Boolean doDispose) at Evergine.Framework.ScreenContextCommands.ToContextCommand.Execute() at Evergine.Framework.Services.ScreenContextManager.Update(TimeSpan gameTime) at Evergine.Framework.Application.UpdateFrame(TimeSpan gameTime) at UIWindowSystemsDemo.WPF.App.<>c__DisplayClass4_0.<OnStartup>b__1() in C:\repos\UIWindowSystemsDemo\UIWindowSystemsDemo.WPF\App.xaml.cs:line 44 at Evergine.WPF.WPFWindowsSystem.CompositionTarget_Rendering(Object sender, EventArgs e) at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget) at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget) at System.Windows.Media.MediaContext.Resize(ICompositionTarget resizedCompositionTarget) at System.Windows.Interop.HwndTarget.OnResize() at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam) at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.HwndSubclass.DefWndProcWrapper(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
Note that I get this error with or without the extra line (https://github.com/EvergineTeam/Feedback/issues/128#issuecomment-1107512280) added to Evergine.HLSLEverywhere.dll.config.
Thank you @adamthole for sending us this sample, we are looking into it and we'll give you an answer when possible.
Does Evergine run on Windows ARM? I've been trying to get the AutomoticeDemo to run on Windows 11 ARM, but I haven't had luck. I'm not sure if I'm doing something wrong, or if it just isn't supported.
This is the error I am getting:
Unhandled exception. System.InvalidOperationException: Multiple options in 'C:\publish-arm-sc\Evergine.BulletSharpPInvoke.dll.config' file. [dll: 'libbulletc.dll', os: 'windows', wordsize: '64', cpu: 'armv8'] at Evergine.Platform.DllRegister.MapLibraryName(String assemblyLocation, String originalLibName, String& mappedLibName) at Evergine.Platform.DllRegister.MapAndLoad(String libraryName, Assembly assembly, Nullable`1 dllImportSearchPath) at System.Runtime.InteropServices.NativeLibrary.LoadLibraryCallbackStub(String libraryName, Assembly assembly, Boolean hasDllImportSearchPathFlags, UInt32 dllImportSearchPathFlags) at BulletSharp.CollisionObject.btCollisionObject_new() at BulletSharp.CollisionObject..ctor() at Evergine.Bullet.BulletPhysicManager3D.Initialize() at Evergine.Bullet.BulletPhysicManager3D.OnAttached() at Evergine.Framework.AttachableObject.Attach() at Evergine.Framework.Managers.SceneManagers.AttachManagers() at Evergine.Framework.Scene.Initialize() at Evergine.Framework.Services.ScreenContextManager.InitializeScreenContext(ScreenContext context) at Evergine.Framework.Services.ScreenContextManager.ToExecute(ScreenContext nextContext, ScreenTransition transition, Boolean doDispose) at Evergine.Framework.ScreenContextCommands.ToContextCommand.Execute() at Evergine.Framework.Services.ScreenContextManager.Update(TimeSpan gameTime) at Evergine.Framework.Application.UpdateFrame(TimeSpan gameTime) at AutomotiveDemo.WPF.App.<>c__DisplayClass4_0.b__1()