Просмотр исходного кода

Stub VSMS related ioctls (#6313)

* Stub VSMS related ioctls

* Clean up usings
gdkchan 2 лет назад
Родитель
Сommit
d1a093e5ca

+ 33 - 0
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);

+ 11 - 0
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;
+    }
+}

+ 13 - 0
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;
+    }
+}