[NOT FOR MERGE YET] Ignore format reinterpretation hack #4089
This is an intentional hack which will ignore reloading textures from the cpu when the texture was created solely on the gpu (ie from a texture copy) and the requested texture format differs from cached format. Normally this would require a flush as the formats are different but this will skip that bringing huge performance benefits to games that use this to draw mostly unnoticable after effects.
Used to debug cases when hw texture encoding / decoding will be useful and when it won't work (such as if the depth buffer is being read from in a texture format)
Hi, this is neobot, using neobrain's account. I'm keeping an archive of versions of this PR:
My result here is not that impressive due to CPU bottleneck so keep this in mind. The performance gap will be much greater if using a combination of great CPU and GPU.
Pokédex 3D Pro [Displaying Abomasnow Pokedex – 34% → 85%]
Zen Pinball 3D [Excalibur table (Launch the ball) – 57% → 76%]
Phoenix Wright: Ace Attorney - Dual Destinies [With Apollo character shown – 33% → 109%
Phoenix Wright: Ace Attorney - Spirit of Justice [First game dialog with background image – 60% → 223%]
50 Classic Games [For some reason, this log only show once during booting the game and no where to be seen elsewhere in game – No performance difference]
Luxor 3D [Same case as above – No performance difference]
Super Mario Maker [Occurs during booting only, can't test any further as the game cannot proceed to main menu]
Mii Maker [Only occurs during booting]
Metal Gear Solid: Snake Eater 3D [Same case as above]
Prof. Layton vs Phoenix Wright: Ace Attorney [This log only occurs on Main Menu – 158% → 416%]
Prof. Layton vs Phoenix Wright: Ace Attorney [In dialog with Chelmey – 98% → 295%]
Super Smash Bros [Mario - Battlefield map (paused mode) – 69% → 200%]
Project X Zone 2 [This log only occurs on Main Menu – 325% → 423%]
Fire Emblem Fates [During character creation – 86% → 200%]
Monster Hunter 4 Ultimate [During character creation – 83% → 185%]
Pokémon Mystery Dungeon: Gates to Infinity [Only occur during game loading (three circle)]
Pokémon Red [Video Framebuffer not updated at all – 178% → 324%]
Tales of the Abyss [Stuck on loading due to pipe3 unimplemented]
Existing issue discovered
Note: It shows nothing initially but if you upscale, it will show the previous image buffer. Same goes with down-scaling back. Assume the texture is not forwarding properly.
Tested with i7-3770K @ 4.3GHz & GTX 680
Monster Hunter Generations [Astalos - 95% → 235% | during its roar - 80% → 180%]
Monster Hunter 3 Ultimate [Capcom logo - 15% → 40%]
Monster Hunter 4 Ultimate [Monster roars - 45% → 85%]
Monster Hunter Stories [Hakum Village - 41% → 43%]
Etrian Odyssey Untold [Emerald Grove - 175% → 615%]
At boot I also saw:
Monster Hunter Stories with Intel 3770 and R9 290.
Even with this hack Monster Hunter Stories still so slow.
Added a telemetry field to check whenever the hack is used by a game and put it in canary. This should give us a good list of games to check for regressions.
Thank you everyone for your previous test results!
Okay, we are getting a bunch of telemetry data pouring in right now with games that we'll need to check to see if they still work after the hack. I'll make a new post with all the games that we find in a couple of days :)
Thanks everyone for your performance tests! The first batch of telemetry has come back with this following list of games that trigger this hack. If you have any of these games, please check that they aren't broken :D (and if you find any performance gains or what not, lemme know)
The performance gain is outstanding in some games
Kid Icarus Uprising (Surprised that now boots and goes ingame)
KINGDOM HEARTS 3D
Also in my case, sometimes there was a massive slowdown between screen changes, and now them are all gone, specially noticeable in the ORAS intro movie.
MGS 3D runs at full speed now more than ever on my hardware:
Canary 764: ~74 FPS
Graphics card: NVIDIA GeForce GTX 260
Performance has improved with this PR.
Nightly 901: 29-30FPS (if not scaled), 20-22FPS (scaled)
At the end of the day, this is just a hack. I don't see myself or any other maintainer merging this, even behind an option. I don't have the time or the effort to put into doing full texture reinterpretation either, so I'll just close this. At one point I felt strongly that this was more on the side of "acceptable workaround" instead of a hack, but after a few months of the PR sitting here, I still can't see myself pushing this forward any more so I'm just going to close it.