diff options
| author | Ac_K <Acoustik666@gmail.com> | 2023-08-17 14:59:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-17 09:59:05 -0300 |
| commit | b0b7843d5c7372db60211255be0edfcb97dcb56d (patch) | |
| tree | 08ddc16f41e3455f66c47d86bba83d7295e1a83c /src/Ryujinx.Horizon/Sdk | |
| parent | 6ed613a6e6a66d57d2fdb045d926e42dfcdd3206 (diff) | |
mm: Migrate service in Horizon project (#5580)
* mm: Migrate service in Horizon project
This PR migrate the `mm:u` service to the Horizon project, things were checked by some RE aswell, that's why some vars are renamed, the logic should be the same as before.
Tests are welcome.
* Lock _sessionList instead
* Fix comment
* Fix Session fields order
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk')
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs | 17 | ||||
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/MmNv/Module.cs | 15 | ||||
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/MmNv/Session.cs | 26 |
3 files changed, 58 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs b/src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs new file mode 100644 index 00000000..300b957f --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/MmNv/IRequest.cs @@ -0,0 +1,17 @@ +using Ryujinx.Horizon.Common; +using Ryujinx.Horizon.Sdk.Sf; + +namespace Ryujinx.Horizon.Sdk.MmNv +{ + interface IRequest : IServiceObject + { + Result InitializeOld(Module module, uint fgmPriority, uint autoClearEvent); + Result FinalizeOld(Module module); + Result SetAndWaitOld(Module module, uint clockRateMin, int clockRateMax); + Result GetOld(out uint clockRateActual, Module module); + Result Initialize(out uint requestId, Module module, uint fgmPriority, uint autoClearEvent); + Result Finalize(uint requestId); + Result SetAndWait(uint requestId, uint clockRateMin, int clockRateMax); + Result Get(out uint clockRateActual, uint requestId); + } +} diff --git a/src/Ryujinx.Horizon/Sdk/MmNv/Module.cs b/src/Ryujinx.Horizon/Sdk/MmNv/Module.cs new file mode 100644 index 00000000..e029d037 --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/MmNv/Module.cs @@ -0,0 +1,15 @@ +namespace Ryujinx.Horizon.Sdk.MmNv +{ + enum Module : uint + { + Cpu, + Gpu, + Emc, + SysBus, + MSelect, + NvDec, + NvEnc, + NvJpg, + Test, + } +} diff --git a/src/Ryujinx.Horizon/Sdk/MmNv/Session.cs b/src/Ryujinx.Horizon/Sdk/MmNv/Session.cs new file mode 100644 index 00000000..b9158569 --- /dev/null +++ b/src/Ryujinx.Horizon/Sdk/MmNv/Session.cs @@ -0,0 +1,26 @@ +namespace Ryujinx.Horizon.Sdk.MmNv +{ + class Session + { + public Module Module { get; } + public uint Id { get; } + public bool IsAutoClearEvent { get; } + public uint ClockRateMin { get; private set; } + public int ClockRateMax { get; private set; } + + public Session(uint id, Module module, bool isAutoClearEvent) + { + Module = module; + Id = id; + IsAutoClearEvent = isAutoClearEvent; + ClockRateMin = 0; + ClockRateMax = -1; + } + + public void SetAndWait(uint clockRateMin, int clockRateMax) + { + ClockRateMin = clockRateMin; + ClockRateMax = clockRateMax; + } + } +} |
