aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2023-08-17 14:59:05 +0200
committerGitHub <noreply@github.com>2023-08-17 09:59:05 -0300
commitb0b7843d5c7372db60211255be0edfcb97dcb56d (patch)
tree08ddc16f41e3455f66c47d86bba83d7295e1a83c /src/Ryujinx.Horizon/Sdk
parent6ed613a6e6a66d57d2fdb045d926e42dfcdd3206 (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.cs17
-rw-r--r--src/Ryujinx.Horizon/Sdk/MmNv/Module.cs15
-rw-r--r--src/Ryujinx.Horizon/Sdk/MmNv/Session.cs26
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;
+ }
+ }
+}