Status update from Nekotekina (2021-02-14)
Added 2021-02-14 14:52:11 +0000 UTCHello, my friends. Another month passed, and there is still a lot of work to be done despite some progress in various areas:
- Warning fixes progress. Few warnings were enabled for GCC/clang, and the lack of return was made an error. This is one of the tools that can help to prevent serious bug in the process of development. Clang noreturn analyser demonstrated interesting behaviour, forcing to apply noreturn attribute to the destructor, which caused some problems afterwards. But now it seems sorted out.
- Improved memory management on Linux, for instance, severely reduced coredump size with the help of MADV_DONTDUMP. One critical bug is fixed in unmapping process.
- Added an ability to properly free loaded compiled PRX or OVL libraries to reduce memory consumption.
- Started work of removing RTTI (removed typeid). Sadly, removing dynamic_cast will be a PITA. It's slow and a bit misused in RSX code.
- Enabled parsing MSELF containers for precompilation feature. MSELF is a simple format that directly contains a bunch of other files. That was an old TODO. It directly preceded elad's work to compile PRX and OVL at the start (instead of using "Create PPU Cache" and "Create Firmware Cache" features). Because some OVL files are also contained in MSELF files.
- Fixed ever-locked RPCS3.log.gz on Linux after crash. I was a bug that was preventing new gz file to be created.
- Finally, a PPU LLVM progress! I managed to improve analyser to compile less garbage and more code, improve compiled code with GHC calling convention (similar is used in SPU LLVM), probably even reduced overall cache size by stripping useless information such as unwind info. Implemented ppu_escape, similar feature exists in SPU code. PPU LLVM version was bumped, but it's not the end of the work.
This is not the end since in every area there is still work to be done.
- Need to finalize PPU LLVM transition to new DSL and enable interpreter to be dynamically compiled with actual options, like in SPU LLVM. Some instructions are also left unoptimized which is very unfortunate. Some optimizations can be added along the way. You can see the state of this work in this PR: https://github.com/RPCS3/rpcs3/pull/9760
- Need to make the hard decision of making old interpreters obsolete with full transition to new dynamically-built interpreters. This approach is important for reducing inconsistencies and increasing control.
- Need to finish TSX-FA compatibility problem. This is very unfortunate but can't be left in current state.
- Need to implement journaling VFS of some kind to sort our various problems of incompatibilities between PS3 filesystem and native one. Case-sensitivity is one example of such.
- Need to keep fixing warnings instead of silencing them, in order to improve safety of coding process.
I tried to write about the most important things although there are plenty of others. I must apologize if something was left uncovered. Thank you for your continued support.
Ivan.
Comments
thanks your work
JiaWen Li
2021-03-16 15:09:32 +0000 UTChoping you will get to solve the "rsx unimplemented unnormalized sampling" issue :)
Manmana
2021-02-18 13:07:56 +0000 UTCI love seeing how far this project has come over the years.
David Dively
2021-02-14 14:53:53 +0000 UTC