Переглянути джерело

nvdrv: Implement/stub DumpGraphicsMemoryInfo and GetStatus.

- Used by Undertale.
bunnei 7 роки тому
батько
коміт
0d673a84b6

+ 16 - 2
src/core/hle/service/nvdrv/interface.cpp

@@ -88,6 +88,20 @@ void NVDRV::FinishInitialize(Kernel::HLERequestContext& ctx) {
     rb.Push(RESULT_SUCCESS);
 }
 
+void NVDRV::GetStatus(Kernel::HLERequestContext& ctx) {
+    LOG_WARNING(Service_NVDRV, "(STUBBED) called");
+    IPC::ResponseBuilder rb{ctx, 2};
+    rb.Push(RESULT_SUCCESS);
+}
+
+void NVDRV::DumpGraphicsMemoryInfo(Kernel::HLERequestContext& ctx) {
+    // According to SwitchBrew, this has no inputs and no outputs, so effectively does nothing on
+    // retail hardware.
+    LOG_DEBUG(Service_NVDRV, "called");
+    IPC::ResponseBuilder rb{ctx, 2};
+    rb.Push(RESULT_SUCCESS);
+}
+
 NVDRV::NVDRV(std::shared_ptr<Module> nvdrv, const char* name)
     : ServiceFramework(name), nvdrv(std::move(nvdrv)) {
     static const FunctionInfo functions[] = {
@@ -97,10 +111,10 @@ NVDRV::NVDRV(std::shared_ptr<Module> nvdrv, const char* name)
         {3, &NVDRV::Initialize, "Initialize"},
         {4, &NVDRV::QueryEvent, "QueryEvent"},
         {5, nullptr, "MapSharedMem"},
-        {6, nullptr, "GetStatus"},
+        {6, &NVDRV::GetStatus, "GetStatus"},
         {7, nullptr, "ForceSetClientPID"},
         {8, &NVDRV::SetClientPID, "SetClientPID"},
-        {9, nullptr, "DumpGraphicsMemoryInfo"},
+        {9, &NVDRV::DumpGraphicsMemoryInfo, "DumpGraphicsMemoryInfo"},
         {10, nullptr, "InitializeDevtools"},
         {11, &NVDRV::Ioctl, "Ioctl2"},
         {12, nullptr, "Ioctl3"},

+ 2 - 0
src/core/hle/service/nvdrv/interface.h

@@ -24,6 +24,8 @@ private:
     void QueryEvent(Kernel::HLERequestContext& ctx);
     void SetClientPID(Kernel::HLERequestContext& ctx);
     void FinishInitialize(Kernel::HLERequestContext& ctx);
+    void GetStatus(Kernel::HLERequestContext& ctx);
+    void DumpGraphicsMemoryInfo(Kernel::HLERequestContext& ctx);
 
     std::shared_ptr<Module> nvdrv;