From 30199fe7018b012b31e6b47c769c53f8dc71ea61 Mon Sep 17 00:00:00 2001 From: IndecisiveTurtle <47210458+raphaelthegreat@users.noreply.github.com> Date: Fri, 21 Jun 2024 19:09:55 +0300 Subject: [PATCH] kernel: Add scePthreadExit --- src/core/libraries/kernel/event_flag/event_flag.cpp | 6 +++--- src/core/libraries/kernel/thread_management.cpp | 5 +++++ src/video_core/texture_cache/tile_manager.cpp | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core/libraries/kernel/event_flag/event_flag.cpp b/src/core/libraries/kernel/event_flag/event_flag.cpp index f4877844..b8cac4f3 100644 --- a/src/core/libraries/kernel/event_flag/event_flag.cpp +++ b/src/core/libraries/kernel/event_flag/event_flag.cpp @@ -73,7 +73,7 @@ int PS4_SYSV_ABI sceKernelCloseEventFlag() { return ORBIS_OK; } int PS4_SYSV_ABI sceKernelClearEventFlag(OrbisKernelEventFlag ef, u64 bitPattern) { - LOG_ERROR(Kernel_Event, "called"); + LOG_INFO(Kernel_Event, "called"); ef->Clear(bitPattern); return ORBIS_OK; } @@ -177,10 +177,10 @@ int PS4_SYSV_ABI sceKernelWaitEventFlag(OrbisKernelEventFlag ef, u64 bitPattern, UNREACHABLE(); } - auto result = ef->Wait(bitPattern, wait, clear, pResultPat, pTimeout); + u32 result = ef->Wait(bitPattern, wait, clear, pResultPat, pTimeout); if (result != ORBIS_OK) { - LOG_ERROR(Kernel_Event, "returned {}", result); + LOG_ERROR(Kernel_Event, "returned {:#x}", result); } return result; diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index de9ec316..48da2e61 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -1276,6 +1276,10 @@ int PS4_SYSV_ABI scePthreadOnce(int* once_control, void (*init_routine)(void)) { return pthread_once(reinterpret_cast(once_control), init_routine); } +void PS4_SYSV_ABI scePthreadExit(void *value_ptr) { + pthread_exit(value_ptr); +} + void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("lZzFeSxPl08", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_setcancelstate); LIB_FUNCTION("0TyVk4MSLt0", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_cond_init); @@ -1293,6 +1297,7 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("onNY9Byn-W8", "libkernel", 1, "libkernel", 1, 1, scePthreadJoin); LIB_FUNCTION("4qGrR6eoP9Y", "libkernel", 1, "libkernel", 1, 1, scePthreadDetach); LIB_FUNCTION("3PtV6p3QNX4", "libkernel", 1, "libkernel", 1, 1, scePthreadEqual); + LIB_FUNCTION("3kg7rT0NQIs", "libkernel", 1, "libkernel", 1, 1, scePthreadExit); LIB_FUNCTION("7Xl257M4VNI", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_equal); LIB_FUNCTION("h9CcP3J0oVM", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_join); diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index 3d1cc5c5..2d9d2316 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -191,6 +191,7 @@ vk::Format DemoteImageFormatForDetiling(vk::Format format) { case vk::Format::eBc3SrgbBlock: [[fallthrough]]; case vk::Format::eBc3UnormBlock: + case vk::Format::eBc7SrgbBlock: return vk::Format::eR32G32B32A32Uint; default: break;