A RELEASE_MEM with an interrupt select drained the device: the queue worker submitted everything recorded and waited for the GPU before it stored the label and delivered the interrupt. PPSA21564 issues about 300 of them per frame, so the worker and the GPU took turns. The label is now recorded like any other (on the GPU behind the work, or as a completion action behind pending write-backs), and the delivery becomes a completion action of the batch holding the work before the packet (Recorder::AfterRecordedWork, after the batch's earlier completions). It is counted with the completion labels, so idle workers and pollers reap it, and it starts the label flush deadline. With draws or dispatches recorded since the last submit the batch is submitted at once. A batch holding only label stores stays open and goes out with the next work, at the label flush deadline, at a wait, at a flip or at the end of the submission, like any other pending label. A label the GPU cannot store, or one that does not decode, still drains. The interrupt so never arrives before the work ahead of it completed and its label landed; it can only arrive later, by at most the flush deadline plus the work recorded into the same batch. |
||
|---|---|---|
| .github | ||
| 3rdparty | ||
| core | ||
| docs | ||
| tools | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
README.md
About
Tool for automatic executables porting to Linux and Windows.
Includes a relinker that converts executable to the target system's native format and implementations of system prx libraries suitable for dynamic linking. No emulation or separate runtime process.
Usage, Build instructions, Technical debt of the project, code style conventions, contributing
Status
* System libraries: percentage of the functions known to the project so far (declared in core/libs/prx), not of every PS5 system function. The total grows as more functions are declared.
Dreaming Sarah (2D platformer) runs at a stable 60 fps on a GTX 1050 Ti / i5-7500 3.4GHz.
Unsupported or unexpected states strictly throw std::runtime_error. what() is printed to stderr and the process terminates.
The shader recompiler successfully produces SPIR-V (validated via Spirv-Tools when built with ANYPS5_ENABLE_SPIRV_TOOLS).
Compatibility
See the game compatibility list for tested games and known issues.
Input mapping
SDL-mapped game controllers are supported, including analog sticks and triggers. Keyboard and mouse controls can be configured with an anyps5-input.ini file. See input mapping for the supported devices and configuration format.
Disclaimer
This project is intended for interoperability, research, preservation, and compatibility purposes. It does not include, distribute, or require copyrighted software, firmware, cryptographic keys, or proprietary libraries. Users are responsible for ensuring that any binaries used with this project are obtained and used in accordance with applicable laws and their respective license terms.
License
This project is licensed under the GNU General Public License version 2 only.