Emulator Issues #11819
Crash on macOS when enabling GPU Texture Decoding with Vulkan Backend - crash in Vulkan::CommandBufferManager::SubmitCommandBuffer
Any game (Wii or GC) choosen.
What's the problem? Describe what went wrong.
On macOS choose "Vulkan Backend" an enable "GPU Texture Decoding" (Safe or Fast).
Start a game:
- With a GC-game the N-Logo is displayed but will crash immediately when the intro screen of the game appears.
- With a Wii-game it crashes immediately, no Wii logo is displayed.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Dolphin dev version 5.0-10772, tried also older dev-version, but same crash, it seems to be an issue in the function Vulkan::CommandBufferManager::SubmitCommandBuffer()
Is the issue present in the latest stable version?
No since stable version 5.0 is 3 years ago and no Vulkan Backend for Dolphin existed then...
However with OpenGL backend it doesn't crash when "GPU Texture Decoding" is enabled.
Tried recording with Fifolog, but here it's clearly not a graphical issue...
Application Specific Information:
-[MTLIOAccelComputeCommandEncoder bindEmulationArguments]:53: failed assertion `No compute pipeline state bound'
Here's "CrashReporter" log:
Thread 15 Crashed: 0 libsystem_kernel.dylib 0x00007fff791ce2c6 __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fff79289bf1 pthread_kill + 284 2 libsystem_c.dylib 0x00007fff791386a6 abort + 127 3 libsystem_c.dylib 0x00007fff7910120d __assert_rtn + 324 4 com.apple.Metal 0x00007fff51c9268e MTLReportFailure + 567 5 com.apple.Metal 0x00007fff51c50468 -[MTLIOAccelComputeCommandEncoder bindEmulationArguments] + 350 6 com.apple.driver.AppleIntelHD4000GraphicsMTLDriver 0x00007fff4504c4f3 -[MTLIGAccelComputeCommandEncoder dispatchThreadgroups:threadsPerThreadgroup:] + 209 7 libvulkan.dylib 0x0000000118812b18 MVKCmdDispatch::encode(MVKCommandEncoder*) + 120 8 libvulkan.dylib 0x00000001187bcddb MVKCommandEncoder::encode(id<MTLCommandBuffer>) + 139 9 libvulkan.dylib 0x00000001187bcc1b MVKCommandBuffer::submit(MVKQueueCommandBufferSubmission*) + 363 10 libvulkan.dylib 0x00000001187ecc64 MVKQueueCommandBufferSubmission::execute() + 420 11 libvulkan.dylib 0x00000001187eb7c1 MVKQueue::submit(unsigned int, VkSubmitInfo const*, VkFence_T*) + 561 12 org.dolphin-emu.dolphin 0x000000010f9656ea Vulkan::CommandBufferManager::SubmitCommandBuffer(unsigned int, VkSwapchainKHR_T*, unsigned int) + 234
What are your PC specifications? (CPU, GPU, Operating System, more)
Apple Mac mini (Late 2012) Core i7 with "Intel HD Graphics 4000",
macOS 10.14.6 and vulkansdk-macos-220.127.116.11 (vulkansdk-macos-18.104.22.168 also tested).
I get a segfault instead, however I'm on nVidia. Wind Waker manages to show the Nintendo logo and the Dolby ProLogic II logo before crashing.
This seems to be a regression in Dolphin, because 5.0-9431, which I still have lying somewhere, doesn't crash with GPU Texture decoding enabled. Current master crashes with any MoltenVK version I tried (1.0.26 released earlier than that).
However, I observed that starting with MoltenVK 1.0.35 (the one currently bundled with Dolphin) GPU Texture decoding stops garbling textures, so this might be worth investigating further.
5.0-9638 (Move a significant amount of video backend logic to VideoCommon - PR #7753 from stenzek) is the first version that broke it.
I guess this slipped by, because no one would use GPU texture decoding on macOS anyway with all the garbled textures it produced (until 1.0.35 apparently).
Oh sorry! Please forget my previous reply:
Dolphin on macOS with Vulkan-Backend still crashes when GPU Texture Decoding. Otherwise everything works fine
Tested with Dolphin 5.0-10912 on macMini 2018 core i5 / INTEL UHD Graphics 630, Vulkan SDK 1.1.121
Here's the crash log:
Thread 15 Crashed:
0 com.apple.driver.AppleIntelKBLGraphicsMTLDriver 0x00007fff347bf642 CHAL_INTEL::ChalContext::ChalExecuteKernel(CHAL_INTEL::tagDecodedBinaryInfo const*, MTLSize&, MTLSize&, MTLSize&, IGBufferMemory<31ul>&, sTextureArgument const*, sSamplerArgument const*, unsigned int const*, MTLRegion, MTLIGAccelBuffer*, unsigned int, MTLIGAccelBuffer*, unsigned int) + 578
1 com.apple.driver.AppleIntelKBLGraphicsMTLDriver 0x00007fff347746d0 IGAccelComputeCommandEncoder::dispatchThreadgroups(MTLSize, MTLSize) + 172
2 com.apple.driver.AppleIntelKBLGraphicsMTLDriver 0x00007fff34774574 -[MTLIGAccelComputeCommandEncoder dispatchThreadgroups:threadsPerThreadgroup:] + 234
3 libvulkan.dylib 0x000000011342cb18 MVKCmdDispatch::encode(MVKCommandEncoder*) + 120
4 libvulkan.dylib 0x00000001133d6ddb MVKCommandEncoder::encode(id<MTLCommandBuffer>) + 139
5 libvulkan.dylib 0x00000001133d6c1b MVKCommandBuffer::submit(MVKQueueCommandBufferSubmission*) + 363
6 libvulkan.dylib 0x0000000113406c64 MVKQueueCommandBufferSubmission::execute() + 420
7 libvulkan.dylib 0x00000001134057c1 MVKQueue::submit(unsigned int, VkSubmitInfo const*, VkFence_T*) + 561
8 org.dolphin-emu.dolphin 0x000000010a0a9aba Vulkan::CommandBufferManager::SubmitCommandBuffer(unsigned int, VkSwapchainKHR_T*, unsigned int) + 234