From c547ab8901faa0c498319e514bdcd2554dde16fb Mon Sep 17 00:00:00 2001 From: Stephen Miller Date: Mon, 21 Apr 2025 15:01:33 -0500 Subject: [PATCH] Separate presenter initialization from libSceGnmDriver HLE init Without this, our GPU side never inits when LLE. --- src/core/libraries/gnmdriver/gnmdriver.cpp | 4 +++- src/core/libraries/gnmdriver/gnmdriver.h | 2 ++ src/core/libraries/libs.cpp | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/libraries/gnmdriver/gnmdriver.cpp b/src/core/libraries/gnmdriver/gnmdriver.cpp index 25ac4921c..02d888bd1 100644 --- a/src/core/libraries/gnmdriver/gnmdriver.cpp +++ b/src/core/libraries/gnmdriver/gnmdriver.cpp @@ -2799,7 +2799,7 @@ int PS4_SYSV_ABI Func_F916890425496553() { return ORBIS_OK; } -void RegisterlibSceGnmDriver(Core::Loader::SymbolsResolver* sym) { +void InitializePresenter() { LOG_INFO(Lib_GnmDriver, "Initializing presenter"); liverpool = std::make_unique(); presenter = std::make_unique(*g_window, liverpool.get()); @@ -2815,7 +2815,9 @@ void RegisterlibSceGnmDriver(Core::Loader::SymbolsResolver* sym) { Platform::IrqC::Instance()->Register(Platform::InterruptId::GpuIdle, ResetSubmissionLock, nullptr); +} +void RegisterlibSceGnmDriver(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("b0xyllnVY-I", "libSceGnmDriver", 1, "libSceGnmDriver", 1, 1, sceGnmAddEqEvent); LIB_FUNCTION("b08AgtPlHPg", "libSceGnmDriver", 1, "libSceGnmDriver", 1, 1, sceGnmAreSubmitsAllowed); diff --git a/src/core/libraries/gnmdriver/gnmdriver.h b/src/core/libraries/gnmdriver/gnmdriver.h index 94d06c85f..94f1392d8 100644 --- a/src/core/libraries/gnmdriver/gnmdriver.h +++ b/src/core/libraries/gnmdriver/gnmdriver.h @@ -14,6 +14,8 @@ namespace Libraries::GnmDriver { using namespace Kernel; +void InitializePresenter(); + s32 PS4_SYSV_ABI sceGnmAddEqEvent(SceKernelEqueue eq, u64 id, void* udata); int PS4_SYSV_ABI sceGnmAreSubmitsAllowed(); int PS4_SYSV_ABI sceGnmBeginWorkload(u32 workload_stream, u64* workload); diff --git a/src/core/libraries/libs.cpp b/src/core/libraries/libs.cpp index 075a9e90a..658e36bad 100644 --- a/src/core/libraries/libs.cpp +++ b/src/core/libraries/libs.cpp @@ -66,6 +66,7 @@ namespace Libraries { void InitHLELibs(Core::Loader::SymbolsResolver* sym) { LOG_INFO(Lib_Kernel, "Initializing HLE libraries"); Libraries::Kernel::RegisterKernel(sym); + Libraries::GnmDriver::InitializePresenter(); Libraries::VideoOut::RegisterLib(sym); Libraries::UserService::RegisterlibSceUserService(sym); Libraries::SystemService::RegisterlibSceSystemService(sym);