Citra-Nightly-2104 on Pi5 (screen issue) - Nintendo 3DS
-
Hello all,
We can install a 3DS emulator on a Pi5 - Retropie that runs with Vulkan (WIP). See the following thread and here is the citra.sh file (draft). It works well, but very slowly in "Software" mode. The bad news is that it works fast with "Vulkan", but instead of having two different screens, we have a duplicate of the main screen in the second screen. The emulator works very well on other platforms like Microsoft Windows or other.Does anyone have an idea of the source of the problem or how to fix this problem?
For now, you must use citra-qt (UI mode), .3ds roms must be decrypted
-
M mitu moved this topic from Projects and Themes
-
Here's the log from /home/pi/.local/share/citra-emu/log
We can see many errors even if it loads and many warnings in the log
New edition: here is the log without Vulkan but with the GraphicsAPI: "software" mode (which loads correctly):
https://pastebin.com/Q2vNdFBFDifferences beetween the 2 logs are only the addition of those lines for Graphic API Vulkan :
[ 61.456002] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:CollectTelemetryParameters:664: VK_DRIVER: V3DV Mesa 23.2.1 [ 61.456006] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:CollectTelemetryParameters:665: VK_DEVICE: V3D 7.1.7 [ 61.456008] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:CollectTelemetryParameters:666: VK_VERSION: 1.2.255 [ 61.456030] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:operator():430: Enabling extension: VK_KHR_swapchain [ 61.456032] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:operator():430: Enabling extension: VK_KHR_image_format_list [ 61.456033] Render.Vulkan <Warning> video_core/renderer_vulkan/vk_instance.cpp:operator():439: Extension VK_EXT_shader_stencil_export unavailable. [ 61.456034] Render.Vulkan <Warning> video_core/renderer_vulkan/vk_instance.cpp:operator():439: Extension VK_EXT_external_memory_host unavailable. [ 61.456036] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:operator():430: Enabling extension: VK_EXT_tooling_info [ 61.456037] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:operator():430: Enabling extension: VK_KHR_timeline_semaphore [ 61.456039] Render.Vulkan <Warning> video_core/renderer_vulkan/vk_instance.cpp:operator():439: Extension VK_KHR_portability_subset unavailable. [ 61.456040] Render.Vulkan <Warning> video_core/renderer_vulkan/vk_instance.cpp:operator():439: Extension VK_EXT_extended_dynamic_state unavailable. [ 61.456041] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:operator():430: Enabling extension: VK_EXT_custom_border_color [ 61.456042] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:operator():430: Enabling extension: VK_EXT_index_type_uint8 [ 61.456043] Render.Vulkan <Warning> video_core/renderer_vulkan/vk_instance.cpp:operator():439: Extension VK_EXT_fragment_shader_interlock unavailable. [ 61.456043] Render.Vulkan <Info> video_core/renderer_vulkan/vk_instance.cpp:operator():430: Enabling extension: VK_EXT_pipeline_creation_cache_control [ 61.456045] Render.Vulkan <Warning> video_core/renderer_vulkan/vk_instance.cpp:operator():439: Extension VK_KHR_fragment_shader_barycentric unavailable. [ 61.472567] Render.Vulkan <Warning> video_core/renderer_vulkan/vk_instance.cpp:CreateFormatTable:305: Format B8G8R8Unorm unsupported, falling back unconditionally to R8G8B8A8Unorm [ 61.500407] Render.Vulkan <Info> video_core/renderer_vulkan/vk_stream_buffer.cpp:CreateBuffers:176: Creating Stream buffer with size 128 KiB with flags { DeviceLocal | HostVisible | HostCoherent } [ 61.625900] Render.Vulkan <Info> video_core/renderer_vulkan/vk_stream_buffer.cpp:CreateBuffers:176: Creating Upload buffer with size 524288 KiB with flags { DeviceLocal | HostVisible | HostCoherent } [ 61.979534] Render.Vulkan <Info> video_core/renderer_vulkan/vk_stream_buffer.cpp:CreateBuffers:176: Creating Download buffer with size 16384 KiB with flags { DeviceLocal | HostVisible | HostCoherent } [ 62.011588] Render.Vulkan <Info> video_core/renderer_vulkan/vk_stream_buffer.cpp:CreateBuffers:176: Creating Stream buffer with size 65536 KiB with flags { DeviceLocal | HostVisible | HostCoherent } [ 62.055379] Render.Vulkan <Info> video_core/renderer_vulkan/vk_stream_buffer.cpp:CreateBuffers:176: Creating Stream buffer with size 4096 KiB with flags { DeviceLocal | HostVisible | HostCoherent } [ 62.057886] Render.Vulkan <Info> video_core/renderer_vulkan/vk_stream_buffer.cpp:CreateBuffers:176: Creating Stream buffer with size 2048 KiB with flags { DeviceLocal | HostVisible | HostCoherent } [ 62.058809] Render.Vulkan <Info> video_core/renderer_vulkan/vk_stream_buffer.cpp:CreateBuffers:176: Creating Stream buffer with size 2048 KiB with flags { DeviceLocal | HostVisible | HostCoherent }
and this
[ 62.232942] Render.Vulkan <Info> video_core/renderer_vulkan/vk_pipeline_cache.cpp:LoadDiskCache:165: Loading pipeline cache with size 57 KB
-
@DTEAM For what little it is worth, my honest opinion is that it is probably not worth it to try to get Citra working on the Pi using Vulkan unless we can find an experienced graphics developer to work on it. Vulkan support on Citra looks very preliminary - if it had a couple more years of development time before the plug got pulled on Citra development I think this might have not been the case. Vulkan is a very complex API to program for and even dolphin required 1000's of commits before its Vulkan backend matured enough to become usable. For example, if you watch the below video showing Citra running on the Pi5, specifically the portions where Sun/Moon is played you will see that the screen duplication issue is far from the only issue that Citra has running Vulkan. It looks like it also has major issues with rendering pretty much anything 3D:
I actually built your version of Citra and ran Etrian Odyssey Untold The Millennium Girl and using an existing save file. Using Vulkan, it handled the menu system really well but the screen went black as soon as I entered a dungeon (where there is rendering of 3d polys). Please let me know if you have a different experience here.
Honestly, I don't understand why Raspberry Pi OS still doesn't support GLES 3.2. Apparently the Pi's GPU is compliant, it's just that the drivers don't support it. In this case, I suspect that Citra's GLES 3.2 support is far more mature than Vulkan and Citra would likely be running quite well on the Pi using that API. Do you think that there is any chance that we can get the MESA folks to revisit GLES 3.2 compliance? It sounded like they were very close a few years ago on the Pi4 and then just stopped and moved over to Vulkan. I really believe that support for the GLES 3.2 API would be more valuable for emulation than Vulkan.
-
@gvx64 said in Citra-Nightly-2104 on Pi5 (screen issue) - Nintendo 3DS:
@DTEAM For what little it is worth, my honest opinion is that it is probably not worth it to try to get Citra working on the Pi using Vulkan unless we can find an experienced graphics developer to work on it. Vulkan support on Citra looks very preliminary - if it had a couple more years of development time before the plug got pulled on Citra development I think this might have not been the case. Vulkan is a very complex API to program for and even dolphin required 1000's of commits before its Vulkan backend matured enough to become usable. For example, if you watch the below video showing Citra running on the Pi5, specifically the portions where Sun/Moon is played you will see that the screen duplication issue is far from the only issue that Citra has running Vulkan. It looks like it also has major issues with rendering pretty much anything 3D:
I actually built your version of Citra and ran Etrian Odyssey Untold The Millennium Girl and using an existing save file. Using Vulkan, it handled the menu system really well but the screen went black as soon as I entered a dungeon (where there is rendering of 3d polys). Please let me know if you have a different experience here.
Honestly, I don't understand why Raspberry Pi OS still doesn't support GLES 3.2. Apparently the Pi's GPU is compliant, it's just that the drivers don't support it. In this case, I suspect that Citra's GLES 3.2 support is far more mature than Vulkan and Citra would likely be running quite well on the Pi using that API. Do you think that there is any chance that we can get the MESA folks to revisit GLES 3.2 compliance? It sounded like they were very close a few years ago on the Pi4 and then just stopped and moved over to Vulkan. I really believe that support for the GLES 3.2 API would be more valuable for emulation than Vulkan.
Fwiw 3DS emulation is in a weird flux right now given there's multiple competing software that is all derivatives of Citra it appears.
Give it a few years for an obvious front running to come forward, as a bunch of them right now do boot into arm64 (I'm using Panda3ds and found it's good for Fantasy Life, Pushmo and some others) but they're in very early stages of development
-
Thanks for your comments. With your work with Dolphin for the Pi, I was hoping you would respond to this thread. I'm happy to hear your thoughts. I'm currently chatting with one of the people who wants to restart the project. If you feel like commenting or helping out on this thread, you're more than welcome.
https://github.com/Borked3DS/Borked3DS/issues/330
He seems to be interested to help for Pi5
For GLES 3.2 I saw Mesa and GLes in the same sentence here. Don't know if it can help
https://www.glfw.org/docs/latest/compile.html -
@gvx64 said in Citra-Nightly-2104 on Pi5 (screen issue) - Nintendo 3DS:
I actually built your version of Citra and ran Etrian Odyssey Untold The Millennium Girl and using an existing save file. Using Vulkan, it handled the menu system really well but the screen went black as soon as I entered a dungeon (where there is rendering of 3d polys). Please let me know if you have a different experience here.
Yes but I didn't play with the API setups. We don't have this problem with Vulkan on Microsoft Windows. I always compare the game performance on both systems and I agree with you, the development of this emulator on Linux/Mesa (Pi5) with Vulkan is not at the same level than the one on Microsoft Windows.
I'm looking forward to seeing if someone with the skills will take this on with the Borked3DS project. It's one of the only new projects alive that continues where Citra left off.
Thanks again for your comments!
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.