This is typical when dealing with GPU marked memory. In case of a Page Fault, dynarmic will invalidate the code block and recompile it under the first software approach. On fastmem, we use instead about 4 instructions: 3 for checking if the address is within the emulated address space (can be disabled with Unsafe CPU -> disable address space checks) and 1 instruction for memory read/write. All this costed around 10-15 instructions. Whenever a game accessed memory, we would look into the emulated page table check if we have a valid physical mem address and then read the memory, if the physical address wasn't valid, the game would call an emulator fallback. In the previous approach, we would emulate Guest virtual memory through a page table where we would store addresses to physical memory for each virtual page the application/game had. Fastmem is the name we have given to emulating the MMU by using Host allocation instead of software MMU emulation. This Pull Request finally implements a long requested feature from Citra: Fastmem.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |