NvServices refactoring (#120)

* Initial implementation of NvMap/NvHostCtrl

* More work on NvHostCtrl

* Refactoring of nvservices, move GPU Vmm, make Vmm per-process, refactor most gpu devices, move Gpu to Core, fix CbBind

* Implement GetGpuTime, support CancelSynchronization, fix issue on InsertWaitingMutex, proper double buffering support (again, not working properly for commercial games, only hb)

* Try to fix perf regression reading/writing textures, moved syncpts and events to a UserCtx class, delete global state when the process exits, other minor tweaks

* Remove now unused code, add comment about probably wrong result codes
This commit is contained in:
gdkchan 2018-05-07 15:53:23 -03:00 committed by GitHub
parent f9b17f86c1
commit 428360c5ac
2 changed files with 38 additions and 1 deletions

View file

@ -6,7 +6,7 @@ using System.Runtime.InteropServices;
namespace ChocolArm64.Memory namespace ChocolArm64.Memory
{ {
public unsafe class AMemory : IDisposable public unsafe class AMemory : IAMemory, IDisposable
{ {
private const long ErgMask = (4 << AThreadState.ErgSizeLog2) - 1; private const long ErgMask = (4 << AThreadState.ErgSizeLog2) - 1;

37
Memory/IAMemory.cs Normal file
View file

@ -0,0 +1,37 @@
namespace ChocolArm64.Memory
{
public interface IAMemory
{
sbyte ReadSByte(long Position);
short ReadInt16(long Position);
int ReadInt32(long Position);
long ReadInt64(long Position);
byte ReadByte(long Position);
ushort ReadUInt16(long Position);
uint ReadUInt32(long Position);
ulong ReadUInt64(long Position);
void WriteSByte(long Position, sbyte Value);
void WriteInt16(long Position, short Value);
void WriteInt32(long Position, int Value);
void WriteInt64(long Position, long Value);
void WriteByte(long Position, byte Value);
void WriteUInt16(long Position, ushort Value);
void WriteUInt32(long Position, uint Value);
void WriteUInt64(long Position, ulong Value);
}
}