From ad7c41ba5c0729de45626b549e79df697f46ae24 Mon Sep 17 00:00:00 2001 From: Stephen Miller Date: Mon, 21 Apr 2025 15:50:19 -0500 Subject: [PATCH] Stub some ioctl commands properly --- src/core/devices/gc_device.cpp | 30 ++++++++++++++++++++++++++++-- src/core/devices/gc_device.h | 8 ++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/core/devices/gc_device.cpp b/src/core/devices/gc_device.cpp index 684f414b1..866a72675 100644 --- a/src/core/devices/gc_device.cpp +++ b/src/core/devices/gc_device.cpp @@ -11,8 +11,34 @@ std::shared_ptr GcDevice::Create(u32 handle, const char*, int, u16) reinterpret_cast(new GcDevice(handle))); } -int GcDevice::ioctl(u64 cmd, Common::VaCtx* args) { - LOG_ERROR(Kernel_Pthread, "(STUBBED) cmd = {:#x} called", cmd); +s32 GcDevice::ioctl(u64 cmd, Common::VaCtx* args) { + auto command = GcCommands(cmd); + switch(command) { + case GcCommands::AreSubmitsAllowed: { + LOG_ERROR(Lib_GnmDriver, "unhandled ioctl sceGnmAreSubmitsAllowed", cmd); + break; + } + case GcCommands::GetCuMask: { + LOG_ERROR(Lib_GnmDriver, "unhandled ioctl get cu mask", cmd); + break; + } + case GcCommands::GetNumTcaUnits: { + LOG_ERROR(Lib_GnmDriver, "unhandled ioctl sceGnmGetNumTcaUnits", cmd); + break; + } + case GcCommands::MipStatsReport: { + LOG_ERROR(Lib_GnmDriver, "unhandled ioctl sceGnmMipStatsReport", cmd); + break; + } + case GcCommands::SetGsRingSizes: { + LOG_ERROR(Lib_GnmDriver, "unhandled ioctl sceGnmSetGsRingSizes", cmd); + break; + } + default: { + LOG_ERROR(Lib_GnmDriver, "unhandled ioctl cmd = {:#x} called", cmd); + break; + } + } return 0; } diff --git a/src/core/devices/gc_device.h b/src/core/devices/gc_device.h index 93ac04fde..2541b7c45 100644 --- a/src/core/devices/gc_device.h +++ b/src/core/devices/gc_device.h @@ -28,6 +28,14 @@ public: int ftruncate(s64 length) override; int getdents(void* buf, u32 nbytes, s64* basep) override; s64 pwrite(const void* buf, size_t nbytes, u64 offset) override; +private: + enum class GcCommands : u64 { + GetNumTcaUnits = 0xc004811f, + SetGsRingSizes = 0xc00c8110, + MipStatsReport = 0xc0848119, + AreSubmitsAllowed = 0xc008811b, + GetCuMask = 0xc010810b, + }; }; } // namespace Core::Devices \ No newline at end of file