Bladeren bron

Fix NV stubs (#124)

* Fix NV stubs

* Compliant with feedback

* Oops, Compliant with feedback #2
Starlet 8 jaren geleden
bovenliggende
commit
8e306b3ac1

+ 8 - 0
Ryujinx.Core/OsHle/Services/Nv/NvGpuGpu/NvGpuGpuGetActiveSlotMask.cs

@@ -0,0 +1,8 @@
+namespace Ryujinx.Core.OsHle.Services.Nv.NvGpuGpu
+{
+    struct NvGpuGpuGetActiveSlotMask
+    {
+        public int Slot;
+        public int Mask;
+    }
+}

+ 10 - 0
Ryujinx.Core/OsHle/Services/Nv/NvGpuGpu/NvGpuGpuGetTpcMasks.cs

@@ -0,0 +1,10 @@
+namespace Ryujinx.Core.OsHle.Services.Nv.NvGpuGpu
+{
+    struct NvGpuGpuGetTpcMasks
+    {
+        public int  MaskBufferSize;
+        public int  Reserved;
+        public long MaskBufferAddress;
+        public long Unk;
+    }
+}

+ 28 - 3
Ryujinx.Core/OsHle/Services/Nv/NvGpuGpu/NvGpuGpuIoctl.cs

@@ -38,9 +38,14 @@ namespace Ryujinx.Core.OsHle.Services.Nv.NvGpuGpu
 
         private static int ZcullGetCtxSize(ServiceCtx Context)
         {
-            long InputPosition  = Context.Request.GetBufferType0x21Position();
             long OutputPosition = Context.Request.GetBufferType0x22Position();
 
+            NvGpuGpuZcullGetCtxSize Args = new NvGpuGpuZcullGetCtxSize();
+
+            Args.Size = 1;
+
+            AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
+
             Context.Ns.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
 
             return NvResult.Success;
@@ -48,9 +53,23 @@ namespace Ryujinx.Core.OsHle.Services.Nv.NvGpuGpu
 
         private static int ZcullGetInfo(ServiceCtx Context)
         {
-            long InputPosition  = Context.Request.GetBufferType0x21Position();
             long OutputPosition = Context.Request.GetBufferType0x22Position();
 
+            NvGpuGpuZcullGetInfo Args = new NvGpuGpuZcullGetInfo();
+
+            Args.WidthAlignPixels           = 0x20;
+            Args.HeightAlignPixels          = 0x20;
+            Args.PixelSquaresByAliquots     = 0x400;
+            Args.AliquotTotal               = 0x800;
+            Args.RegionByteMultiplier       = 0x20;
+            Args.RegionHeaderSize           = 0x20;
+            Args.SubregionHeaderSize        = 0xc0;
+            Args.SubregionWidthAlignPixels  = 0x20;
+            Args.SubregionHeightAlignPixels = 0x40;
+            Args.SubregionCount             = 0x10;
+
+            AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
+
             Context.Ns.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
 
             return NvResult.Success;
@@ -128,9 +147,15 @@ namespace Ryujinx.Core.OsHle.Services.Nv.NvGpuGpu
 
         private static int GetActiveSlotMask(ServiceCtx Context)
         {
-            long InputPosition  = Context.Request.GetBufferType0x21Position();
             long OutputPosition = Context.Request.GetBufferType0x22Position();
 
+            NvGpuGpuGetActiveSlotMask Args = new NvGpuGpuGetActiveSlotMask();
+
+            Args.Slot = 0x07;
+            Args.Mask = 0x01;
+
+            AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
+
             Context.Ns.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
 
             return NvResult.Success;

+ 7 - 0
Ryujinx.Core/OsHle/Services/Nv/NvGpuGpu/NvGpuGpuZcullGetCtxSize.cs

@@ -0,0 +1,7 @@
+namespace Ryujinx.Core.OsHle.Services.Nv.NvGpuGpu
+{
+    struct NvGpuGpuZcullGetCtxSize
+    {
+        public int Size;
+    }
+}

+ 16 - 0
Ryujinx.Core/OsHle/Services/Nv/NvGpuGpu/NvGpuGpuZcullGetInfo.cs

@@ -0,0 +1,16 @@
+namespace Ryujinx.Core.OsHle.Services.Nv.NvGpuGpu
+{
+    struct NvGpuGpuZcullGetInfo
+    {
+        public int WidthAlignPixels;
+        public int HeightAlignPixels;
+        public int PixelSquaresByAliquots;
+        public int AliquotTotal;
+        public int RegionByteMultiplier;
+        public int RegionHeaderSize;
+        public int SubregionHeaderSize;
+        public int SubregionWidthAlignPixels;
+        public int SubregionHeightAlignPixels;
+        public int SubregionCount;
+    }
+}