Separate presenter initialization from libSceGnmDriver HLE init

Without this, our GPU side never inits when LLE.
This commit is contained in:
Stephen Miller 2025-04-21 15:01:33 -05:00
parent 21982db6a7
commit c547ab8901
3 changed files with 6 additions and 1 deletions

View file

@ -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<AmdGpu::Liverpool>();
presenter = std::make_unique<Vulkan::Presenter>(*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);

View file

@ -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);

View file

@ -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);