From 134541bdcd79a6e1c223a7ed2c0eecca6d870272 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Fri, 5 Jul 2024 15:08:33 +0300 Subject: [PATCH 1/3] submodules updates --- externals/fmt | 2 +- externals/glslang | 2 +- externals/magic_enum | 2 +- externals/sdl3 | 2 +- externals/vma | 2 +- externals/zlib-ng | 2 +- src/sdl_window.cpp | 28 ++++++++++++++-------------- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/externals/fmt b/externals/fmt index bbf44cc0..a9625970 160000 --- a/externals/fmt +++ b/externals/fmt @@ -1 +1 @@ -Subproject commit bbf44cc000531dc7737d5321ccfa9f2f11b20127 +Subproject commit a96259701e1d16e2f8c8299c668e863ec0ac0119 diff --git a/externals/glslang b/externals/glslang index 33c7e308..5939e32b 160000 --- a/externals/glslang +++ b/externals/glslang @@ -1 +1 @@ -Subproject commit 33c7e30860928bab3819c3abae8297b109a02f73 +Subproject commit 5939e32b87487fa9c72ab336ebfcc5ae26d9ab6d diff --git a/externals/magic_enum b/externals/magic_enum index dd6a39d0..ec1adc57 160000 --- a/externals/magic_enum +++ b/externals/magic_enum @@ -1 +1 @@ -Subproject commit dd6a39d0ba1852cf06907e0f0573a2a10d23c2ad +Subproject commit ec1adc5763f684e0f32888b157bfc0b86021b8e9 diff --git a/externals/sdl3 b/externals/sdl3 index b72c2234..f9a06c20 160000 --- a/externals/sdl3 +++ b/externals/sdl3 @@ -1 +1 @@ -Subproject commit b72c22340e9a3c680011e245c28492bf60f5be66 +Subproject commit f9a06c20ed85fb1d6754fc2280d6183382217910 diff --git a/externals/vma b/externals/vma index feb11e17..257138b8 160000 --- a/externals/vma +++ b/externals/vma @@ -1 +1 @@ -Subproject commit feb11e172715011ef2a7b3b6c7c8737337b34181 +Subproject commit 257138b8f5686ae84491a3df9f90a77d5660c3bd diff --git a/externals/zlib-ng b/externals/zlib-ng index 80514c17..d54e3769 160000 --- a/externals/zlib-ng +++ b/externals/zlib-ng @@ -1 +1 @@ -Subproject commit 80514c17b384df68fbe83cca69ece0521b85f708 +Subproject commit d54e3769be0c522015b784eca2af258b1c026107 diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index 1cc3f65a..d4da268a 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -130,7 +130,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { case SDLK_RETURN: button = OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_OPTIONS; break; - case SDLK_a: + case SDLK_A: axis = Input::Axis::LeftX; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += -127; @@ -139,7 +139,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_d: + case SDLK_D: axis = Input::Axis::LeftX; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += 127; @@ -148,7 +148,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_w: + case SDLK_W: axis = Input::Axis::LeftY; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += -127; @@ -157,7 +157,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_s: + case SDLK_S: axis = Input::Axis::LeftY; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += 127; @@ -166,7 +166,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_j: + case SDLK_J: axis = Input::Axis::RightX; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += -127; @@ -175,7 +175,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_l: + case SDLK_L: axis = Input::Axis::RightX; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += 127; @@ -184,7 +184,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_i: + case SDLK_I: axis = Input::Axis::RightY; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += -127; @@ -193,7 +193,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_k: + case SDLK_K: axis = Input::Axis::RightY; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += 127; @@ -202,19 +202,19 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; - case SDLK_x: + case SDLK_X: button = OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_L3; break; - case SDLK_m: + case SDLK_M: button = OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_R3; break; - case SDLK_q: + case SDLK_Q: button = OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_L1; break; - case SDLK_u: + case SDLK_U: button = OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_R1; break; - case SDLK_e: + case SDLK_E: button = OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_L2; axis = Input::Axis::TriggerLeft; if (event->type == SDL_EVENT_KEY_DOWN) { @@ -224,7 +224,7 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { } ax = Input::GetAxis(0, 0x80, axisvalue); break; - case SDLK_o: + case SDLK_O: button = OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_R2; axis = Input::Axis::TriggerRight; if (event->type == SDL_EVENT_KEY_DOWN) { From 4ae879875e5b1c39c0cbd54fd44212e74dc0502c Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Fri, 5 Jul 2024 15:23:35 +0300 Subject: [PATCH 2/3] scePthreadMutexTimedlock added --- .../libraries/kernel/thread_management.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index e960ec01..3f6f9bd6 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -840,6 +840,31 @@ int PS4_SYSV_ABI posix_pthread_mutexattr_setprotocol(ScePthreadMutexattr* attr, return result; } +int PS4_SYSV_ABI scePthreadMutexTimedlock(ScePthreadMutex* mutex, u64 usec) { + mutex = createMutex(mutex); + if (mutex == nullptr) { + return SCE_KERNEL_ERROR_EINVAL; + } + + timespec time{}; + time.tv_sec = usec / 1000000; + time.tv_nsec = ((usec % 1000000) * 1000); + int result = pthread_mutex_timedlock(&(*mutex)->pth_mutex, &time); + + switch (result) { + case 0: + return SCE_OK; + case ETIMEDOUT: + return SCE_KERNEL_ERROR_ETIMEDOUT; + case EINTR: + return SCE_KERNEL_ERROR_EINTR; + case EAGAIN: + return SCE_KERNEL_ERROR_EAGAIN; + default: + return SCE_KERNEL_ERROR_EINVAL; + } +} + static int pthread_copy_attributes(ScePthreadAttr* dst, const ScePthreadAttr* src) { if (dst == nullptr || *dst == nullptr || src == nullptr || *src == nullptr) { return SCE_KERNEL_ERROR_EINVAL; @@ -1362,6 +1387,8 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("9UK1vLZQft4", "libkernel", 1, "libkernel", 1, 1, scePthreadMutexLock); LIB_FUNCTION("tn3VlD0hG60", "libkernel", 1, "libkernel", 1, 1, scePthreadMutexUnlock); LIB_FUNCTION("upoVrzMHFeE", "libkernel", 1, "libkernel", 1, 1, scePthreadMutexTrylock); + LIB_FUNCTION("IafI2PxcPnQ", "libkernel", 1, "libkernel", 1, 1, scePthreadMutexTimedlock); + // cond calls LIB_FUNCTION("2Tb92quprl0", "libkernel", 1, "libkernel", 1, 1, scePthreadCondInit); LIB_FUNCTION("m5-2bsNfv7s", "libkernel", 1, "libkernel", 1, 1, scePthreadCondattrInit); From d4d7e9f5f632269be1258b5117454ac8605f351f Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Sat, 6 Jul 2024 10:27:57 +0300 Subject: [PATCH 3/3] removed hardware info seems make perfomance issues , will test something more lightweight --- .gitmodules | 3 --- CMakeLists.txt | 2 +- externals/CMakeLists.txt | 3 --- externals/hwinfo | 1 - src/emulator.cpp | 15 --------------- src/emulator.h | 1 - 6 files changed, 1 insertion(+), 24 deletions(-) delete mode 160000 externals/hwinfo diff --git a/.gitmodules b/.gitmodules index 5733f4fe..d6965722 100644 --- a/.gitmodules +++ b/.gitmodules @@ -58,6 +58,3 @@ [submodule "externals/tracy"] path = externals/tracy url = https://github.com/shadps4-emu/tracy.git -[submodule "externals/hwinfo"] - path = externals/hwinfo - url = https://github.com/lfreist/hwinfo.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d91224d..66dbe119 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -544,7 +544,7 @@ endif() create_target_directory_groups(shadps4) -target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient hwinfo::HWinfo) +target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient) target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::SPIRV glslang::glslang SDL3::SDL3) if (NOT ENABLE_QT_GUI) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index ceec21c0..ca9c6747 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -140,6 +140,3 @@ option(TRACY_ON_DEMAND "" ON) option(TRACY_NO_FRAME_IMAGE "" ON) option(TRACY_FIBERS "" ON) # For AmdGpu frontend profiling add_subdirectory(tracy) - -# hwinfo -add_subdirectory(hwinfo) \ No newline at end of file diff --git a/externals/hwinfo b/externals/hwinfo deleted file mode 160000 index 81ea6332..00000000 --- a/externals/hwinfo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 81ea6332fd4839890b1904f9668865145450f8da diff --git a/src/emulator.cpp b/src/emulator.cpp index 303accf3..16f20297 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -22,7 +22,6 @@ #include "core/linker.h" #include "core/memory.h" #include "emulator.h" -#include "hwinfo/hwinfo.h" Frontend::WindowSDL* g_window = nullptr; @@ -43,7 +42,6 @@ Emulator::Emulator() Common::Log::Initialize(); Common::Log::Start(); LOG_INFO(Loader, "Starting shadps4 emulator v{} ", Common::VERSION); - PrintSystemInfo(); } Emulator::~Emulator() { @@ -181,17 +179,4 @@ void Emulator::LoadSystemModules(const std::filesystem::path& file) { } } -void Emulator::PrintSystemInfo() { - auto cpus = hwinfo::getAllCPUs(); - for (const auto& cpu : cpus) { - LOG_INFO(Loader, "CPU #{} {}", cpu.id(), cpu.modelName()); - } - hwinfo::OS os; - LOG_INFO(Loader, "{}", os.name()); - auto gpus = hwinfo::getAllGPUs(); - for (auto& gpu : gpus) { - LOG_INFO(Loader, "GPU #{} {}", gpu.id(), gpu.name()); - } -} - } // namespace Core diff --git a/src/emulator.h b/src/emulator.h index fce612dc..b61ce95e 100644 --- a/src/emulator.h +++ b/src/emulator.h @@ -29,7 +29,6 @@ public: private: void LoadSystemModules(const std::filesystem::path& file); - void PrintSystemInfo(); Core::MemoryManager* memory; Input::GameController* controller = Common::Singleton::Instance();