1
0
Fork 0
mirror of https://github.com/Ryujinx/Ryujinx.git synced 2024-12-30 08:16:01 +00:00
Ryujinx/Ryujinx.Common
gdkchan 95017b8c66
Support memory aliasing (#2954)
* Back to the origins: Make memory manager take guest PA rather than host address once again

* Direct mapping with alias support on Windows

* Fixes and remove more of the emulated shared memory

* Linux support

* Make shared and transfer memory not depend on SharedMemoryStorage

* More efficient view mapping on Windows (no more restricted to 4KB pages at a time)

* Handle potential access violations caused by partial unmap

* Implement host mapping using shared memory on Linux

* Add new GetPhysicalAddressChecked method, used to ensure the virtual address is mapped before address translation

Also align GetRef behaviour with software memory manager

* We don't need a mirrorable memory block for software memory manager mode

* Disable memory aliasing tests while we don't have shared memory support on Mac

* Shared memory & SIGBUS handler for macOS

* Fix typo + nits + re-enable memory tests

* Set MAP_JIT_DARWIN on x86 Mac too

* Add back the address space mirror

* Only set MAP_JIT_DARWIN if we are mapping as executable

* Disable aliasing tests again (still fails on Mac)

* Fix UnmapView4KB (by not casting size to int)

* Use ref counting on memory blocks to delay closing the shared memory handle until all blocks using it are disposed

* Address PR feedback

* Make RO hold a reference to the guest process memory manager to avoid early disposal

Co-authored-by: nastys <nastys@users.noreply.github.com>
2022-05-02 20:30:02 -03:00
..
Collections Support memory aliasing (#2954) 2022-05-02 20:30:02 -03:00
Configuration Implement rotate stick 90 degrees clockwise (#3084) 2022-03-12 18:23:48 +01:00
Extensions Use Enum and Delegate.CreateDelegate generic overloads (#3111) 2022-02-13 10:50:07 -03:00
GraphicsDriver Convert the bool to a lowercase string (#3080) 2022-02-06 12:52:39 -03:00
Logging ntc: Implement IEnsureNetworkClockAvailabilityService (#3192) 2022-03-15 04:07:07 +01:00
Memory hle: Make Ryujinx.HLE project entirely safe (#2789) 2021-11-01 19:38:13 -03:00
Pools Add a Multithreading layer for the GAL, multi-thread shader compilation at runtime (#2501) 2021-08-27 00:31:29 +02:00
System ForceDpiAware: X11 implementation (#3269) 2022-04-10 19:04:22 +02:00
SystemInfo Revise SystemInfo (#2047) 2021-03-01 15:22:00 +11:00
Utilities Use BitOperations methods and delete now unused BitUtils methods (#3134) 2022-02-18 02:35:23 +01:00
AsyncWorkQueue.cs New NVDEC and VIC implementation (#1384) 2020-07-12 05:07:01 +02:00
Hash128.cs Add support for HLE macros and accelerate MultiDrawElementsIndirectCount #2 (#2557) 2021-08-26 23:50:28 +02:00
PerformanceCounter.cs Rewrite scheduler context switch code (#1786) 2020-12-09 19:20:05 -03:00
ReactiveObject.cs ReactiveObject: Handle case when oldValue is null (#3268) 2022-04-15 12:58:27 +02:00
ReferenceEqualityComparer.cs Only enumerate cached textures that are modified when flushing. (#918) 2020-02-07 08:49:26 +11:00
ReleaseInformations.cs Preparation for initial Flatpack and FlatHub integration (#3173) 2022-03-04 18:03:16 +01:00
Ryujinx.Common.csproj infra: Migrate to .NET 6 (#2829) 2021-11-28 21:24:17 +01:00
XXHash128.cs Use ReadOnlySpan<byte> compiler optimization for static data (#3130) 2022-02-17 21:38:50 +01:00