hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.43k stars 2.19k forks source link

Moto G54/Dimensity 7020/BXM-8-256: Bad performance/crashing #18681

Closed stereomato closed 2 months ago

stereomato commented 10 months ago

Game or games this happens in

any game (tested MC3, MCLA, TDU)

What area of the game

At any point on any game. I don't know what's going on, I don't know how to help. Other people say it's fine on their own phones of the same model, and I'm plainly confused.

Speed seen in PPSSPP

65 (40/60) usually

GE frame capture and debug statistics

ULES00108.zip I don't know where "Show Debug Statistics" is on the android app, and the game looks the same as when i ran it on my previous, now dead phone.

Platform

Android

Mobile device model or graphics card (GPU)

Moto G54 5G

PPSSPP version affected

v1.16.6

Last working version

No response

Graphics backend (3D API)

OpenGL / GLES

Any other notes or things you've tried

Changing graphics settings does nothing to improve or worsen the situation. Swiping to bring down the status bar with the home buttons DOES increase performance a fair bit, to near 100%, but it only lasts for a small bit of time, perhaps a second or so.

Checklist

hrydgard commented 10 months ago

That is weird indeed. Is it the same if you switch to Vulkan? This phone shouldn't really have any problems running PSP games as far as I can tell from the specs, although I have gotten weird reports about its GPU before (IMG BXM-8-256).

It might be interesting to try a fresh build from https://buildbot.orphis.net/ppsspp/ since I did a fix recently for phones that have 90hz display, that would throttle down to 45, which was not ideal. However, your phone is a 120hz device so probably not related..

stereomato commented 10 months ago

Is it the same if you switch to Vulkan I don't know. Games crash immediately more or less if using vulkan and anything 3d is rendered. #17825

It might be interesting to try a fresh build from https://buildbot.orphis.net/ppsspp/ since I did a fix recently for phones that have 90hz display, that would throttle down to 45, which was not ideal. However, your phone is a 120hz device so probably not related..

I did test a ppsspp build from there, as it was required by the bug report form. Nothing changes at all aside from the fact that pulling the status bar/control buttons doesn't increase performance anymore. I'm thinking perhaps I got a defective phone? I'm not sure...

hrydgard commented 10 months ago

Vulkan doesn't work on the new build either?

stereomato commented 10 months ago

oh, nice. Now it does work, but the performance seems to be the same. Let me try the currently latest build.

hrydgard commented 10 months ago

That's good at least that it works. Although really strange about the performance. You don't have some extreme battery saving mode enabled, or similar?

stereomato commented 10 months ago

nope, nothing at all of the sort. Haven't even enabled the normal battery saver. I have good performance on OTHER android games, but on PPSSPP and another android game I have abysmal performance. Others with the same phone say they have no issues, so I guess I should bet my phone replaced

stereomato commented 10 months ago

Also, the latest build seems to crash vulkan again, and backend restart doesnt work anymore, app just hangs once "restart" is clicked, and the "pull status bar/controls bar" thing increases performance again. what?

hrydgard commented 10 months ago

what was the intermediate build you tested that was not the latest, where vulkan seemed to work?

This all sounds extremely bizarre, heh.

stereomato commented 10 months ago

v1.16.6-797-g6993cc9e3 this one

This all sounds extremely bizarre, heh.

indeed. I'm so lost.

hrydgard commented 10 months ago

There are no practical difference between that one and the latest. it has to be something intermittent... I dunno

stereomato commented 10 months ago

I wonder if my phone is just... not okay. I'll go today to have it replaced, and well, report back.

stereomato commented 10 months ago

Good news: I restore PPSSPP's settings to default, and that seems to have fixed my performance. 4x PSP rendering + OpenGL mode = 60fps on MC3 or MCLA. Vulkan performance is about the same too, for the small moment of time that it can keep it up until it crashes. I don't know what the issue was, perhaps shader cache (i keep my PPSSPP folder synced thru syncthing + the folder was previously on a sd card on a snapdragon phone, idk)

hrydgard commented 10 months ago

That's good. But hm, I'm quite worried about Vulkan crashing so much. It shouldn't, heh. Anything you can tell me about these crashes, like if you notice something that seems to trigger them?

stereomato commented 10 months ago

They seem random. Happens shortly after actual game rendering. Intro videos don't trigger it. Loading a save state also usually immediately crashes PPSSPP or does so shortly after

hrydgard commented 10 months ago

Hm, that's not good at all, heh :/

stereomato commented 10 months ago

so true If I can help you with this, @ me on the other bug thread. I check my github daily!

stereomato commented 10 months ago

A quick update: on TDU, the performance is abysmal regardless of settings, on OpenGL. On Vulkan, the performance is flawless, but yeah the game crashes some moments after. Also, the GPU test screen is all ok on Vulkan, but some stuff is not ok on OpenGL. Wew.

stereomato commented 10 months ago

Huge update: the setting that tanks performance on TDU is "Hardware Tessellation". Once disabled, TDU runs at 60fps on 3x PSP rendering.

hrydgard commented 10 months ago

Oh, that's quite interesting. Good find...

stereomato commented 10 months ago

Indeed. It doesn't seem to affect other games (of the ones I have at least).

p1p1turr1p1 commented 9 months ago

I have the same phone, all games crashed with vulkan eventually, for me activating Hardware Tessellation fixed it and now I can play with vulkan and load savestates. Not related to PPSSPP but I also couldn't run Dolphin emulator with vulkan.

stereomato commented 9 months ago

@p1p1turr1p1 Really? If I use the fast forward the games crash for me with vulkan, but I also have the cpu clock spid a bit up... Have you reported a bug on the dolphin emu github?

stereomato commented 9 months ago

I get like... repeated past frames that make the display seem to twitch back and forward (idk if i explain this well) with vulkan + hardware skinning/tesellation on

p1p1turr1p1 commented 9 months ago

@p1p1turr1p1 Really? If I use the fast forward the games crash for me with vulkan, but I also have the cpu clock spid a bit up... Have you reported a bug on the dolphin emu github?

Nevermind, it crashed again lol , I guess is not the best phone for emulation. And no I haven't reported anything, I downloaded PPSSPP and Dolphin * yesterday.

stereomato commented 9 months ago

Got it. I just use opengl + 3x psp rendering - hardware tesellation and it works fine. I think the phone's fine, but like, has wonky drivers and or support by 3rd parties. Other games work wel...

p1p1turr1p1 commented 9 months ago

Got it. I just use opengl + 3x psp rendering - hardware tesellation and it works fine. I think the phone's fine, but like, has wonky drivers and or support by 3rd parties. Other games work wel...

For me problems start when using Vulkan, OpenGl always worked but in some cases is slower and causes some graphical issues that idk how to fix. After some testing, savestates and fast forward definitely cause crashes. I tested Driver 76 and when using these features crashes the game after a few seconds ingame, when not using them, it worked for a longer perioid, and it didn't crash but I only played like 10 minutes so the problem could still be there. I also set the screen at 60hz manually on phone settings, and I think it helped. I'm playing with Vulkan x3 hardware tesselation off.

p1p1turr1p1 commented 9 months ago

I get like... repeated past frames that make the display seem to twitch back and forward (idk if i explain this well) with vulkan + hardware skinning/tesellation on

That also happens to me but I have tesselation off skinning on, Vulkan x3. I kinda overlooked it since at least the game wasn't crashing.*

p1p1turr1p1 commented 9 months ago

After all I said, it started crashing again, and again is almost instantly after going in game. I guess OpenGl is the only way to use this emulator and Dolphin. I'm also playing on AetherSX2 using vulkan and it works fine so I guess we'll have to wait.

stereomato commented 9 months ago

i dont know what it is that triggers the vulkan shenanigans...

hrydgard commented 4 months ago

OK, I've got a G54 now and I can reproduce the crash that happens very early in Vice City Stories.

It does feel connected to fast-forwarding, but it might be an illusion.

The crash is just a generic SIGSEGV deep in the driver (inside a vkCmdDrawIndexed call) with no extra information, unfortunately :(

signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x000000787ee1a000
    x0  b40000775dd85518  x1  0000000000000180  x2  0000000000400000  x3  00000080046623e0
    x4  0000000000000002  x5  0000000000000000  x6  0000007748509cce  x7  0000000000000060
    x8  0000000000000000  x9  000000787ee1a000  x10 0000000000000005  x11 00000000000003e0
    x12 b400007735b375c0  x13 0000000000000005  x14 b40000774c69ac48  x15 b40000775dd85524
    x16 0000000000000000  x17 b40000775dd85510  x18 00000077d9cfa000  x19 0000000000000000
    x20 0000000000000018  x21 0000000000000068  x22 0000000000000007  x23 000000787cc683a0
    x24 0000000000000006  x25 b40000775de65000  x26 0000000000000000  x27 b40000774bf80300
    x28 b4000077432090e8  x29 00000077daffb6a0
    lr  000000000000000c  sp  00000077daffb5e0  pc  00000077485708c8  pst 0000000060001000
backtrace:
      #00 pc 00000000000788c8  /vendor/lib64/hw/mt6855/vulkan.mtk.so (BuildId: 0d9c5ff89021a349d3a128750adef267)
      #01 pc 000000000004f3e4  /vendor/lib64/hw/mt6855/vulkan.mtk.so (BuildId: 0d9c5ff89021a349d3a128750adef267)
      #02 pc 000000000004edfc  /vendor/lib64/hw/mt6855/vulkan.mtk.so (BuildId: 0d9c5ff89021a349d3a128750adef267)
      #03 pc 000000000084c640  arm64/libppsspp_jni.so (VulkanQueueRunner::PerformRenderPass(VKRStep const&, VkCommandBuffer_T*, int, QueueProfileContext&)+1024) (BuildId: 0966b7f407fd9111d1ea97da45f9beb3ff8c4456)
      #04 pc 000000000084bf58  arm64/libppsspp_jni.so (VulkanQueueRunner::RunSteps(std::__ndk1::vector<VKRStep*, std::__ndk1::allocator<VKRStep*> >&, int, FrameData&, FrameDataShared&, bool)+528) (BuildId: 0966b7f407fd9111d1ea97da45f9beb3ff8c4456)
      #05 pc 000000000084444c  arm64/libppsspp_jni.so (VulkanRenderManager::Run(VKRRenderThreadTask&)+732) (BuildId: 0966b7f407fd9111d1ea97da45f9beb3ff8c4456)
      #06 pc 0000000000843164  arm64/libppsspp_jni.so (VulkanRenderManager::RenderThreadFunc()+240) (BuildId: 0966b7f407fd9111d1ea97da45f9beb3ff8c4456)
      #07 pc 0000000000848ac0  arm64/libppsspp_jni.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (VulkanRenderManager::*)(), VulkanRenderManager*> >(void*)+64) (BuildId: 0966b7f407fd9111d1ea97da45f9beb3ff8c4456)

So I don't really know how we can find it. ~I'm going to try to run with validation layers on the device to see if they have anything to complain about.~ Nope, that didn't do it.

This bug is so weird. I thought I had a solution by disabling readbacks, but after a restart the crash was back.

stereomato commented 4 months ago

I gotta be honest, I think this phone/soc is plainly cursed or not well supported. I have issues with other games from graphics issues to general awful performance (until it kinda "fixes" itself).

hrydgard commented 4 months ago

So it appears. Quite disappointing. I might just have to block Vulkan entirely on it

hrydgard commented 2 months ago

This is the same issue as #17825, same GPU, same vendor so probably the same broken driver. Closing as duplicate.