Hi,
I'm kd-11 with another quick development update.
While I was not able to finish mipmap gathering in time, progress in other areas has been steady. In the past fortnight, the following changes have been made to the emulator:
1. Flip management code was rewritten to properly allow FIFO optimizations to work properly. Also fixed frame statistics when the games are using a vblank handler to dispatch flip events. Before this, if the game was too slow to issue a flip command after the next frame started, things would go crazy. Frameskipping would break visuals and the FIFO optimizer would incorrectly schedule draw calls causing visual corruption.
2. MSAA pipeline generation for vulkan was improved. This never truly worked correctly if the game keeps changing its MSAA type constantly. This caused Snake to appear partially transparent in older MGS games.
3. A nasty lockup bug when using multithreaded RSX offloading (MTRSX) was fixed. MTRSX can give a nice speedup if you have a powerful CPU with many threads.
4. A crash present only on Turing cards was patched. This was caused by a hacky optimization that is used to speed up upscaling some formats on NVIDIA cards.
5. The user overlays (aka native user interface) was fixed to work with arbitrary aspect ratios. This was a problem for users of 21:9 displays where the interface would stretch without a fixed aspect ratio, distorting badly in some cases.
6. Fixed a long-standing issue with flip queue handling. Sometimes if the framerate is high enough, RSX may have many queued flip requests that are yet to be handled. While this situation happened rarely, it was causing crashes in the flip code if the requests were handled at an inopportune time.
7. Fixed another vulkan crash triggered by driver thread starvation. When RPCS3 heavily loads up the CPU, the driver's own threads may not get enough resources to dispatch routines effectively. This could cause a situation where RPCS3 would notice that the driver had not responded for some time and think the driver was crashing.
8. Fixed a few miscellaneous regressions. First one was the broken rendering in Hyperdimension Neptunia. Other regressions in the OpenGL renderer were also identified and fixed.
While I still aim to get mipmap gathering working soon, it has been a big task to improve stability of the emulator, which I believe is a critical goal. This is especially the case now for the Vulkan renderer due to the increase in popularity of Vulkan-capable hardware.
Thank you all for your continued support.
Regards,
kd-11