Crash when using Vulkan

If I switch my project to Vulkan, it immediately crashes on launch with this log:

[mvk-error] VK_ERROR_INITIALIZATION_FAILED: Render pipeline compile failed (Error code 2):
Link failed: fragment input user(locn1) was not found in vertex shader outputs.
ERROR:GRAPHICS: Vulkan Error (../src/vulkan/graphics_vulkan.cpp:1615) VK_ERROR_INITIALIZATION_FAILED
Assertion failed: (0), function GetOrCreatePipeline, file graphics_vulkan.cpp, line 1615.
Registered libsqlite Extension
INFO:fmod: Running in the editor. Will attempt to load libraries from project
INFO:CRASH: Successfully wrote Crashdump to file: /Users/greay/Library/Application Support/Defold/_crash
ERROR:CRASH: CALL STACK:

# 0 pc     0x899724 dmengine _ZN7dmCrashL7HandlerEiP9__siginfoPv+36
# 1 pc     0x32bfdd libxpc.dylib _sigtramp+29
# 2 pc     0x2c3db7 libxpc.dylib __pthread_kill+11
# 3 pc     0x2fcebd libxpc.dylib pthread_kill+262
# 4 pc     0x222a79 libxpc.dylib abort+126
# 5 pc     0x221d68 libxpc.dylib err+0
# 6 pc     0x968230 dmengine _ZN10dmGraphicsL9DrawSetupEPNS_13VulkanContextEP17VkCommandBuffer_TPNS_13ScratchBufferEPNS_12DeviceBufferENS_4TypeE.cold.4+0
# 7 pc      0xec51e dmengine _ZN10dmGraphicsL9DrawSetupEPNS_13VulkanContextEP17VkCommandBuffer_TPNS_13ScratchBufferEPNS_12DeviceBufferENS_4TypeE+1886
# 8 pc      0xeff95 dmengine _ZN10dmGraphicsL18VulkanDrawElementsEPvNS_13PrimitiveTypeEjjNS_4TypeEmj+245
# 9 pc     0x7495b1 dmengine _ZN8dmRender4DrawEPNS_13RenderContextEPNS_9PredicateEPNS_19NamedConstantBufferE+1601
#10 pc     0x748ed7 dmengine _ZN8dmRender14DrawRenderListEPNS_13RenderContextEPNS_9PredicateEPNS_19NamedConstantBufferEPKNS_14FrustumOptionsE+4071
#11 pc     0x74c2e9 dmengine _ZN8dmRender13ParseCommandsEPNS_13RenderContextEPNS_7CommandEj+713
#12 pc     0x751362 dmengine _ZN8dmRender26UpdateRenderScriptInstanceEPNS_20RenderScriptInstanceEf+146
#13 pc     0x5c0b80 dmengine _ZN8dmEngine4StepEPNS_6EngineE+1488
#14 pc     0x5c121a dmengine _Z14dmEngineUpdatePN8dmEngine6EngineE+26
#15 pc     0x5c1f3d dmengine _ZN8dmEngine7RunLoopEPKNS_13RunLoopParamsE+109
#16 pc     0x5c1de1 dmengine _Z11engine_mainiPPc+113
#17 pc      0x48345 libobjc.A.dylib start+1909

I can’t make sense of the specific error (fragment input user(locn1) was not found in vertex shader outputs) and looking through the vertex shaders I don’t see anything resembling that.

I’m at a complete loss here – I don’t know how to even begin debugging this.

Could you please create a ticket on GitHub? Which OS version? Which GPU? Include a minimal project too.

1 Like

I created a ticket here (and added a repro project).

macOS Sonoma 14.6.1, Radeon Pro 575X 4 GB.

I was finally able to track down the crash to a specific line in one of the fragment shaders, but I still think the error message could be clearer.

2 Likes

Yes, absolutely agree!

I’m working on fixing that issue, it’s happening because there are mismatches in outputs and inputs between shader stages and it’s not always trivial to figure it out when building the project. What we need is to stop having shaders as separate resources and instead replace them with a single resource that is unique per vertex+fragment shader. It’s underway but not done yet

4 Likes