aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs33
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/NumVsmsArguments.cs11
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/VsmsMappingArguments.cs13
3 files changed, 57 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs
index d287c6d9..29198617 100644
--- a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/NvHostCtrlGpuDeviceFile.cs
@@ -50,6 +50,12 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu
case 0x06:
result = CallIoctlMethod<GetTpcMasksArguments>(GetTpcMasks, arguments);
break;
+ case 0x12:
+ result = CallIoctlMethod<NumVsmsArguments>(NumVsms, arguments);
+ break;
+ case 0x13:
+ result = CallIoctlMethod<VsmsMappingArguments>(VsmsMapping, arguments);
+ break;
case 0x14:
result = CallIoctlMethod<GetActiveSlotMaskArguments>(GetActiveSlotMask, arguments);
break;
@@ -76,6 +82,12 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu
case 0x06:
result = CallIoctlMethod<GetTpcMasksArguments, int>(GetTpcMasks, arguments, inlineOutBuffer);
break;
+ case 0x12:
+ result = CallIoctlMethod<NumVsmsArguments>(NumVsms, arguments);
+ break;
+ case 0x13:
+ result = CallIoctlMethod<VsmsMappingArguments>(VsmsMapping, arguments);
+ break;
}
}
@@ -216,6 +228,27 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu
return NvInternalResult.Success;
}
+ private NvInternalResult NumVsms(ref NumVsmsArguments arguments)
+ {
+ Logger.Stub?.PrintStub(LogClass.ServiceNv);
+
+ arguments.NumVsms = 2;
+
+ return NvInternalResult.Success;
+ }
+
+ private NvInternalResult VsmsMapping(ref VsmsMappingArguments arguments)
+ {
+ Logger.Stub?.PrintStub(LogClass.ServiceNv);
+
+ arguments.Sm0GpcIndex = 0;
+ arguments.Sm0TpcIndex = 0;
+ arguments.Sm1GpcIndex = 0;
+ arguments.Sm1TpcIndex = 1;
+
+ return NvInternalResult.Success;
+ }
+
private NvInternalResult GetActiveSlotMask(ref GetActiveSlotMaskArguments arguments)
{
Logger.Stub?.PrintStub(LogClass.ServiceNv);
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/NumVsmsArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/NumVsmsArguments.cs
new file mode 100644
index 00000000..fb5013a7
--- /dev/null
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/NumVsmsArguments.cs
@@ -0,0 +1,11 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
+{
+ [StructLayout(LayoutKind.Sequential)]
+ struct NumVsmsArguments
+ {
+ public uint NumVsms;
+ public uint Reserved;
+ }
+}
diff --git a/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/VsmsMappingArguments.cs b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/VsmsMappingArguments.cs
new file mode 100644
index 00000000..1b56fcc4
--- /dev/null
+++ b/src/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostCtrlGpu/Types/VsmsMappingArguments.cs
@@ -0,0 +1,13 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu.Types
+{
+ [StructLayout(LayoutKind.Sequential)]
+ struct VsmsMappingArguments
+ {
+ public byte Sm0GpcIndex;
+ public byte Sm0TpcIndex;
+ public byte Sm1GpcIndex;
+ public byte Sm1TpcIndex;
+ }
+}