Hi everyone,
I compiled Unreal Engine 5 on Windows, packaged a Linux ARM version of my game, and uploaded it to an Ubuntu server. I used SwiftShader as the Vulkan implementation, but encountered the following error when running the game.
SwiftShader is a high-performance, fully software-implemented graphics rendering engine developed by Google, primarily used to emulate the functionality of a graphics processor in environments without hardware acceleration.
My Questions:
Compatibility: Can SwiftShader be used to run Unreal Engine applications?
Configuration: If it is possible, what configurations are necessary for both UE5 and SwiftShader to work together seamlessly?
I am aware that using SwiftShader may result in lower runtime efficiency, which is acceptable as long as the game can render basic graphics successfully.
Any guidance or recommendations on resolving the error and properly setting up SwiftShader with Unreal Engine 5 would be greatly appreciated.
Thank you for your assistance!
Best regards,
Austin
/root/xxx/swiftshader/src/Pipeline/SpirvShader.cpp:446 WARNING: UNSUPPORTED: Unsupported capability 55
enter Spirv::Spirv()…
unsupported capability…
/root/xxx/swiftshader/src/Pipeline/SpirvShader.cpp:446 WARNING: UNSUPPORTED: Unsupported capability 55
enter Spirv::Spirv()…
unsupported capability…
/root/xxx/swiftshader/src/Pipeline/SpirvShader.cpp:446 WARNING: UNSUPPORTED: Unsupported capability 55
enter Spirv::Spirv()…
unsupported capability…
/root/xxx/swiftshader/src/Pipeline/SpirvShader.cpp:446 WARNING: UNSUPPORTED: Unsupported capability 55
enter SpirvEmitter::EmitImageRead()…
/root/xxx/swiftshader/src/Pipeline/SpirvShaderImage.cpp:914 WARNING: UNREACHABLE: texelSize: 4
enter SpirvEmitter::EmitImageRead()…
unreachable texelSize…
/root/xxx/swiftshader/src/Pipeline/SpirvShaderImage.cpp:914 WARNING: UNREACHABLE: texelSize: 0
unsupported imageFormat…
/root/xxx/swiftshader/src/Pipeline/SpirvShaderImage.cpp:1237 WARNING: UNSUPPORTED: VkFormat 0
Signal 11 caught.
Malloc Size=262146 LargeMemoryPoolOffset=262162
CommonUnixCrashHandler: Signal=11
[2024.10.31-05.55.53:199][ 10]LogCore: === Critical error: ===
Unhandled Exception: SIGSEGV: invalid attempt to access memory at address 0x0000000000000000
[2024.10.31-05.55.53:199][ 10]LogCore: Fatal error!
0x0000fffc18336d90 libvk_swiftshader.so!UnknownFunction(0x241d90)
0x0000fffc1829c15c libvk_swiftshader.so!UnknownFunction(0x1a715b)
0x0000fffc1829effc libvk_swiftshader.so!UnknownFunction(0x1a9ffb)
0x0000fffc182a3dec libvk_swiftshader.so!UnknownFunction(0x1aedeb)
0x0000fffc182a4040 libvk_swiftshader.so!UnknownFunction(0x1af03f)
0x0000fffc182aec3c libvk_swiftshader.so!UnknownFunction(0x1b9c3b)
0x0000fffc182afe28 libvk_swiftshader.so!UnknownFunction(0x1bae27)
0x0000fffc182a7ac8 libvk_swiftshader.so!UnknownFunction(0x1b2ac7)
0x0000fffc182a7b4c libvk_swiftshader.so!UnknownFunction(0x1b2b4b)
0x0000fffc18299fa8 libvk_swiftshader.so!UnknownFunction(0x1a4fa7)
0x0000fffc1829a04c libvk_swiftshader.so!UnknownFunction(0x1a504b)
0x0000fffc1828eac0 libvk_swiftshader.so!UnknownFunction(0x199abf)
0x0000fffc1828fd28 libvk_swiftshader.so!UnknownFunction(0x19ad27)
0x0000fffc18276994 libvk_swiftshader.so!vkCreateComputePipelines(+0x14f)
0x000000000c5b76d4 UnrealGame-LinuxArm64-Debug!FVulkanPipelineStateCacheManager::CreateComputePipelineFromShader(TVulkanBaseShader<FRHIComputeShader, (EShaderFrequency)5>) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/VulkanRHI/Private/VulkanPipeline.cpp:2187]
0x000000000c5b6f54 UnrealGame-LinuxArm64-Debug!FVulkanPipelineStateCacheManager::GetOrCreateComputePipeline(TVulkanBaseShader<FRHIComputeShader, (EShaderFrequency)5>) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/VulkanRHI/Private/VulkanPipeline.cpp:2109]
0x000000000c5b6e04 UnrealGame-LinuxArm64-Debug!FVulkanPipelineStateCacheManager::RHICreateComputePipelineState(FRHIComputeShader*) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/VulkanRHI/Private/VulkanPipeline.cpp:2079]
0x000000000c5b7114 UnrealGame-LinuxArm64-Debug!FVulkanDynamicRHI::RHICreateComputePipelineState(FRHIComputeShader*) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/VulkanRHI/Private/VulkanPipeline.cpp:2090]
0x000000000c7b2264 UnrealGame-LinuxArm64-Debug!RHICreateComputePipelineState(FRHIComputeShader*) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/RHI/Public/DynamicRHI.h:1145]
0x000000000c816ac8 UnrealGame-LinuxArm64-Debug!FCompilePipelineStateTask::CompilePSO() [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/RHI/Private/PipelineStateCache.cpp:1790]
0x000000000c847690 UnrealGame-LinuxArm64-Debug!FCompilePipelineStateTask::DoTask(ENamedThreads::Type, TRefCountPtr const&) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/RHI/Private/PipelineStateCache.cpp:1777]
0x000000000c847480 UnrealGame-LinuxArm64-Debug!TGraphTask::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >&, ENamedThreads::Type, bool) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Async/TaskGraphInterfaces.h:1265]
0x0000000006a16a28 UnrealGame-LinuxArm64-Debug!FBaseGraphTask::Execute(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >&, ENamedThreads::Type, bool) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Async/TaskGraphInterfaces.h:866]
0x0000000006a19d28 UnrealGame-LinuxArm64-Debug!FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()::operator()() const [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:1973]
0x0000000006a19cc0 UnrealGame-LinuxArm64-Debug!void LowLevelTasks::FTask::Init<FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()>(char16_t const*, LowLevelTasks::ETaskPriority, FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()&&, LowLevelTasks::ETaskFlags)::‘lambda’(bool)::operator()(bool) const [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Async/Fundamental/Task.h:499]
0x0000000006a19c68 UnrealGame-LinuxArm64-Debug!decltype(Forward<FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()>(fp)(Forward<bool&>(fp0))) Invoke<void LowLevelTasks::FTask::Init<FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()>(char16_t const*, LowLevelTasks::ETaskPriority, FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()&&, LowLevelTasks::ETaskFlags)::‘lambda’(bool)&, bool&>(FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()&&, bool&&&) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Templates/Invoke.h:47]
0x0000000006a19880 UnrealGame-LinuxArm64-Debug!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask* (bool), 48u>::TTaskDelegateImpl<void LowLevelTasks::FTask::Init<FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()>(char16_t const*, LowLevelTasks::ETaskPriority, FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()&&, LowLevelTasks::ETaskFlags)::‘lambda’(bool), false>::Call(void*, bool) const [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Async/Fundamental/TaskDelegate.h:162]
0x0000000006a19900 UnrealGame-LinuxArm64-Debug!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask* (bool), 48u>::TTaskDelegateImpl<void LowLevelTasks::FTask::Init<FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()>(char16_t const*, LowLevelTasks::ETaskPriority, FTaskGraphCompatibilityImplementation::QueueTask(FBaseGraphTask*, bool, ENamedThreads::Type, ENamedThreads::Type)::‘lambda’()&&, LowLevelTasks::ETaskFlags)::‘lambda’(bool), false>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask* (bool), 48u>&, void*, unsigned int, bool) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Async/Fundamental/TaskDelegate.h:171]
0x0000000006a03b28 UnrealGame-LinuxArm64-Debug!LowLevelTasks::FTask* LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask* (bool), 48u>::CallAndMove<48u>(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask* (bool), 48u>&, bool) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Async/Fundamental/TaskDelegate.h:308]
0x0000000006a037a0 UnrealGame-LinuxArm64-Debug!LowLevelTasks::FTask::ExecuteTask() [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Async/Fundamental/Task.h:627]
0x00000000069b4e64 UnrealGame-LinuxArm64-Debug!LowLevelTasks::FScheduler::ExecuteTask(LowLevelTasks::FTask*&) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/Core/Private/Async/Fundamental/Scheduler.cpp:150]
0x00000000069b60cc UnrealGame-LinuxArm64-Debug!bool LowLevelTasks::FScheduler::TryExecuteTaskFrom<LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue, &(LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue::DequeueGlobal(bool, bool)), false>(LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue*, LowLevelTasks::TLocalQueueRegistry<1024u>::FOutOfWork&, bool, bool) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/Core/Private/Async/Fundamental/Scheduler.cpp:349]
0x00000000069b5a48 UnrealGame-LinuxArm64-Debug!LowLevelTasks::FScheduler::WorkerMain(LowLevelTasks::FSleepEvent*, LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue*, unsigned int, bool) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/Core/Private/Async/Fundamental/Scheduler.cpp:378]
0x0000000006a4b7b4 UnrealGame-LinuxArm64-Debug!LowLevelTasks::FScheduler::CreateWorker(bool, FThread::EForkable, LowLevelTasks::FSleepEvent*, LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue*, EThreadPriority, unsigned long long)::$_0::operator()() const [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/Core/Private/Async/Fundamental/Scheduler.cpp:70]
0x0000000006a4b764 UnrealGame-LinuxArm64-Debug!decltype(Forward<LowLevelTasks::FScheduler::CreateWorker(bool, FThread::EForkable, LowLevelTasks::FSleepEvent*, LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue*, EThreadPriority, unsigned long long)::$_0&>(fp)()) Invoke<LowLevelTasks::FScheduler::CreateWorker(bool, FThread::EForkable, LowLevelTasks::FSleepEvent*, LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue*, EThreadPriority, unsigned long long)::$_0&>(LowLevelTasks::FScheduler::CreateWorker(bool, FThread::EForkable, LowLevelTasks::FSleepEvent*, LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue*, EThreadPriority, unsigned long long)::$_0&&&) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Templates/Invoke.h:47]
0x0000000006a4b460 UnrealGame-LinuxArm64-Debug!UE::Core::Private::Function::TFunctionRefCaller<LowLevelTasks::FScheduler::CreateWorker(bool, FThread::EForkable, LowLevelTasks::FSleepEvent*, LowLevelTasks::TLocalQueueRegistry<1024u>::TLocalQueue*, EThreadPriority, unsigned long long)::$_0, void ()>::Call(void*) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Templates/Function.h:479]
0x0000000006a480ec UnrealGame-LinuxArm64-Debug!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage, void ()>::operator()() const [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Public/Templates/Function.h:629]
0x0000000006c7507c UnrealGame-LinuxArm64-Debug!FThreadImpl::Run() [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/Core/Private/HAL/Thread.cpp:66]
0x0000000006c2cf1c UnrealGame-LinuxArm64-Debug!FRunnableThreadPThread::Run() [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/./Runtime/Core/Private/HAL/PThreadRunnableThread.cpp:25]
0x0000000006b62144 UnrealGame-LinuxArm64-Debug!FRunnableThreadPThread::_ThreadProc(void*) [D:/Code/VisualStudio/UnrealEngine-5.3.2-release/Engine/Source/Runtime/Core/Private/HAL/PThreadRunnableThread.h:187]
0x0000ffffb6d3f624 libpthread.so.0!UnknownFunction(0x7623)
0x0000ffffb6bbf62c libc.so.6!UnknownFunction(0xd162b)
[2024.10.31-05.55.53:209][ 10]LogExit: Executing StaticShutdownAfterError
Malloc Size=131160 LargeMemoryPoolOffset=393352
Malloc Size=131160 LargeMemoryPoolOffset=524536
Malloc Size=162826 LargeMemoryPoolOffset=687386
[2024.10.31-05.55.53:222][ 10]LogHAL: Error: FUnixPlatformProcess::CreateProc: File does not exist (/root/xxx/project6_pack_debug/LinuxArm64/Engine/Binaries/LinuxArm64/CrashReportClient)
Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
Segmentation fault (core dumped)