From b2ba84aa111fe6ed5409d8d0cde5614dcd6f6f3b Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Fri, 26 Jul 2024 00:25:29 -0300 Subject: [PATCH 01/44] BUFFER_STORE_DWORDX2 --- src/shader_recompiler/frontend/translate/translate.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/shader_recompiler/frontend/translate/translate.cpp b/src/shader_recompiler/frontend/translate/translate.cpp index 9e67e82e..15052b2a 100644 --- a/src/shader_recompiler/frontend/translate/translate.cpp +++ b/src/shader_recompiler/frontend/translate/translate.cpp @@ -612,6 +612,9 @@ void Translate(IR::Block* block, u32 block_base, std::span inst_l case Opcode::BUFFER_STORE_DWORD: translator.BUFFER_STORE_FORMAT(1, false, inst); break; + case Opcode::BUFFER_STORE_DWORDX2: + translator.BUFFER_STORE_FORMAT(2, false, inst); + break; case Opcode::BUFFER_STORE_DWORDX3: translator.BUFFER_STORE_FORMAT(3, false, inst); break; From 02d4af27df1ba9714d16e94fb217f3f23f49f210 Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 24 Jul 2024 00:02:16 -0600 Subject: [PATCH 02/44] save_data: fix/accuracy for saveDataMem functions --- .../libraries/app_content/app_content.cpp | 7 ++++-- src/core/libraries/save_data/savedata.cpp | 24 ++++++++++--------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/core/libraries/app_content/app_content.cpp b/src/core/libraries/app_content/app_content.cpp index 7e9cf7a2..3c9b4e1e 100644 --- a/src/core/libraries/app_content/app_content.cpp +++ b/src/core/libraries/app_content/app_content.cpp @@ -198,13 +198,16 @@ int PS4_SYSV_ABI sceAppContentTemporaryDataMount() { int PS4_SYSV_ABI sceAppContentTemporaryDataMount2(OrbisAppContentTemporaryDataOption option, OrbisAppContentMountPoint* mountPoint) { - if (std::string_view(mountPoint->data).empty()) // causing issues with save_data. + if (mountPoint == nullptr) return ORBIS_APP_CONTENT_ERROR_PARAMETER; auto* param_sfo = Common::Singleton::Instance(); std::string id(param_sfo->GetString("CONTENT_ID"), 7, 9); const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::TempDataDir) / id; auto* mnt = Common::Singleton::Instance(); - mnt->Mount(mount_dir, mountPoint->data); + if (std::string(mountPoint->data).empty()) // killzone + mnt->Mount(mount_dir, "/temp0"); + else + mnt->Mount(mount_dir, mountPoint->data); LOG_INFO(Lib_AppContent, "sceAppContentTemporaryDataMount2: option = {}, mountPoint = {}", option, mountPoint->data); return ORBIS_OK; diff --git a/src/core/libraries/save_data/savedata.cpp b/src/core/libraries/save_data/savedata.cpp index db6d0964..a8519ab7 100644 --- a/src/core/libraries/save_data/savedata.cpp +++ b/src/core/libraries/save_data/savedata.cpp @@ -186,21 +186,23 @@ int PS4_SYSV_ABI sceSaveDataDirNameSearch(const OrbisSaveDataDirNameSearchCond* if (!mount_dir.empty() && std::filesystem::exists(mount_dir)) { if (cond->dirName == nullptr) { // look for all dirs if no dir is provided. for (int i = 0; const auto& entry : std::filesystem::directory_iterator(mount_dir)) { - if (std::filesystem::is_directory(entry.path())) { + if (std::filesystem::is_directory(entry.path()) && + entry.path().filename().string() != "sdmemory") { + // sceSaveDataDirNameSearch does not search for dataMemory1/2 dirs. i++; result->dirNamesNum = 0; // why is it 1024? is it max? // copy dir name to be used by sceSaveDataMount in read mode. strncpy(result->dirNames[i].data, entry.path().filename().string().c_str(), 32); result->hitNum = i + 1; - result->dirNamesNum = i + 1; // to confirm - result->setNum = i + 1; // to confirm + result->dirNamesNum = i + 1; + result->setNum = i + 1; } } } else { // Need a game to test. strncpy(result->dirNames[0].data, cond->dirName->data, 32); result->hitNum = 1; - result->dirNamesNum = 1; // to confirm - result->setNum = 1; // to confirm + result->dirNamesNum = 1; + result->setNum = 1; } } else { result->hitNum = 0; @@ -321,7 +323,7 @@ int PS4_SYSV_ABI sceSaveDataGetSaveDataCount() { int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory(const u32 userId, void* buf, const size_t bufSize, const int64_t offset) { const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(userId) / game_serial / "save_mem1.sav"; + std::to_string(userId) / game_serial / "sdmemory/save_mem1.sav"; Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Read); if (!file.IsOpen()) { @@ -336,7 +338,7 @@ int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory(const u32 userId, void* buf, const int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory2(OrbisSaveDataMemoryGet2* getParam) { const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(getParam->userId) / game_serial; + std::to_string(getParam->userId) / game_serial / "sdmemory"; if (getParam == nullptr) return ORBIS_SAVE_DATA_ERROR_PARAMETER; if (getParam->data != nullptr) { @@ -604,7 +606,7 @@ int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory(const u32 userId, const void* buf, const size_t bufSize, const int64_t offset) { LOG_INFO(Lib_SaveData, "called"); const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(userId) / game_serial / "save_mem1.sav"; + std::to_string(userId) / game_serial / "sdmemory/save_mem1.sav"; Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Write); file.Seek(offset); @@ -616,7 +618,7 @@ int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory(const u32 userId, const void* buf, int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory2(const OrbisSaveDataMemorySet2* setParam) { LOG_INFO(Lib_SaveData, "called: dataNum = {}, slotId= {}", setParam->dataNum, setParam->slotId); const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(setParam->userId) / game_serial; + std::to_string(setParam->userId) / game_serial / "sdmemory"; if (setParam->data != nullptr) { Common::FS::IOFile file(mount_dir / "save_mem2.sav", Common::FS::FileAccessMode::Write); if (!file.IsOpen()) @@ -644,7 +646,7 @@ int PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory(u32 userId, size_t memorySize, LOG_INFO(Lib_SaveData, "called:userId = {}, memorySize = {}", userId, memorySize); const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(userId) / game_serial; + std::to_string(userId) / game_serial / "sdmemory"; if (std::filesystem::exists(mount_dir)) { return ORBIS_SAVE_DATA_ERROR_EXISTS; @@ -663,7 +665,7 @@ int PS4_SYSV_ABI sceSaveDataSetupSaveDataMemory2(const OrbisSaveDataMemorySetup2 LOG_INFO(Lib_SaveData, "called"); // if (setupParam->option == 1) { // check this later. const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / - std::to_string(setupParam->userId) / game_serial; + std::to_string(setupParam->userId) / game_serial / "sdmemory"; if (std::filesystem::exists(mount_dir) && std::filesystem::exists(mount_dir / "save_mem2.sav")) { Common::FS::IOFile file(mount_dir / "save_mem2.sav", Common::FS::FileAccessMode::Read); From f29293c9fb9c1e98c06a1b063178b73205877167 Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 24 Jul 2024 00:03:26 -0600 Subject: [PATCH 03/44] thread_management: some pthread functions --- .../libraries/kernel/thread_management.cpp | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index 7c075e87..bbd926d0 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -1340,6 +1340,10 @@ int PS4_SYSV_ABI posix_sem_post(sem_t* sem) { return sem_post(sem); } +int PS4_SYSV_ABI posix_sem_destroy(sem_t* sem) { + return sem_destroy(sem); +} + int PS4_SYSV_ABI posix_sem_getvalue(sem_t* sem, int* sval) { return sem_getvalue(sem, sval); } @@ -1403,6 +1407,26 @@ int PS4_SYSV_ABI posix_pthread_condattr_setclock(ScePthreadCondattr* attr, clock return SCE_OK; } +int PS4_SYSV_ABI posix_pthread_getschedparam(ScePthread thread, int* policy, + SceKernelSchedParam* param) { + return scePthreadGetschedparam(thread, policy, param); +} + +int PS4_SYSV_ABI posix_pthread_setschedparam(ScePthread thread, int policy, + const SceKernelSchedParam* param) { + return scePthreadSetschedparam(thread, policy, param); +} + +int PS4_SYSV_ABI posix_pthread_attr_getschedpolicy(const ScePthreadAttr* attr, int* policy) { + return scePthreadAttrGetschedpolicy(attr, policy); +} + +int PS4_SYSV_ABI scePthreadRename(ScePthread thread, const char* name) { + thread->name = name; + LOG_INFO(Kernel_Pthread, "scePthreadRename: name = {}", thread->name); + return SCE_OK; +} + 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); @@ -1427,6 +1451,7 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("EI-5-jlq2dE", "libkernel", 1, "libkernel", 1, 1, scePthreadGetthreadid); LIB_FUNCTION("1tKyG7RlMJo", "libkernel", 1, "libkernel", 1, 1, scePthreadGetprio); LIB_FUNCTION("W0Hpm2X0uPE", "libkernel", 1, "libkernel", 1, 1, scePthreadSetprio); + LIB_FUNCTION("GBUY7ywdULE", "libkernel", 1, "libkernel", 1, 1, scePthreadRename); LIB_FUNCTION("aI+OeCz8xrQ", "libkernel", 1, "libkernel", 1, 1, scePthreadSelf); LIB_FUNCTION("EotR8a3ASf4", "libkernel", 1, "libkernel", 1, 1, posix_pthread_self); @@ -1498,6 +1523,8 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("EjllaAqAPZo", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_condattr_setclock); LIB_FUNCTION("Z4QosVuAsA0", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_once); + LIB_FUNCTION("RtLRV-pBTTY", "libScePosix", 1, "libkernel", 1, 1, + posix_pthread_attr_getschedpolicy); // openorbis weird functions LIB_FUNCTION("7H0iTOciTLo", "libkernel", 1, "libkernel", 1, 1, posix_pthread_mutex_lock); @@ -1512,9 +1539,12 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("+U1R4WtXvoc", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_detach); LIB_FUNCTION("CBNtXOoef-E", "libScePosix", 1, "libkernel", 1, 1, posix_sched_get_priority_max); LIB_FUNCTION("m0iS6jNsXds", "libScePosix", 1, "libkernel", 1, 1, posix_sched_get_priority_min); + LIB_FUNCTION("FIs3-UQT9sg", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_getschedparam); + LIB_FUNCTION("Xs9hdiD7sAA", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_setschedparam); LIB_FUNCTION("pDuPEf3m4fI", "libScePosix", 1, "libkernel", 1, 1, posix_sem_init); LIB_FUNCTION("YCV5dGGBcCo", "libScePosix", 1, "libkernel", 1, 1, posix_sem_wait); LIB_FUNCTION("IKP8typ0QUk", "libScePosix", 1, "libkernel", 1, 1, posix_sem_post); + LIB_FUNCTION("cDW233RAwWo", "libScePosix", 1, "libkernel", 1, 1, posix_sem_destroy); LIB_FUNCTION("Bq+LRV-N6Hk", "libScePosix", 1, "libkernel", 1, 1, posix_sem_getvalue); // libs RwlockSymbolsRegister(sym); From f35518d527d9eebe876ecf7bd8baca4032959418 Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 24 Jul 2024 00:12:53 -0600 Subject: [PATCH 04/44] sdl window: Added game title (serial, title and app_ver) --- src/emulator.cpp | 14 +++++++++----- src/sdl_window.cpp | 7 ++++--- src/sdl_window.h | 5 ++++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/emulator.cpp b/src/emulator.cpp index 47ac57ac..7985e9e2 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -51,9 +51,6 @@ Emulator::Emulator() { memory = Core::Memory::Instance(); controller = Common::Singleton::Instance(); linker = Common::Singleton::Instance(); - window = std::make_unique(WindowWidth, WindowHeight, controller); - - g_window = window.get(); } Emulator::~Emulator() { @@ -68,6 +65,8 @@ void Emulator::Run(const std::filesystem::path& file) { // Loading param.sfo file if exists std::string id; + std::string title; + std::string app_version; std::filesystem::path sce_sys_folder = file.parent_path() / "sce_sys"; if (std::filesystem::is_directory(sce_sys_folder)) { for (const auto& entry : std::filesystem::directory_iterator(sce_sys_folder)) { @@ -75,10 +74,10 @@ void Emulator::Run(const std::filesystem::path& file) { auto* param_sfo = Common::Singleton::Instance(); param_sfo->open(sce_sys_folder.string() + "/param.sfo", {}); id = std::string(param_sfo->GetString("CONTENT_ID"), 7, 9); - std::string title(param_sfo->GetString("TITLE")); + title = param_sfo->GetString("TITLE"); LOG_INFO(Loader, "Game id: {} Title: {}", id, title); u32 fw_version = param_sfo->GetInteger("SYSTEM_VER"); - std::string app_version = param_sfo->GetString("APP_VER"); + app_version = param_sfo->GetString("APP_VER"); LOG_INFO(Loader, "Fw: {:#x} App Version: {}", fw_version, app_version); } else if (entry.path().filename() == "pic0.png" || entry.path().filename() == "pic1.png") { @@ -92,6 +91,11 @@ void Emulator::Run(const std::filesystem::path& file) { } } } + std::string game_title = id + " - " + title + " <" + app_version + ">"; + window = + std::make_unique(WindowWidth, WindowHeight, controller, game_title); + + g_window = window.get(); const auto& mount_data_dir = Common::FS::GetUserPath(Common::FS::PathType::GameDataDir) / id; if (!std::filesystem::exists(mount_data_dir)) { diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index c4fcbcfa..c0e9afdd 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -18,14 +18,15 @@ namespace Frontend { -WindowSDL::WindowSDL(s32 width_, s32 height_, Input::GameController* controller_) - : width{width_}, height{height_}, controller{controller_} { +WindowSDL::WindowSDL(s32 width_, s32 height_, Input::GameController* controller_, + std::string game_title_) + : width{width_}, height{height_}, controller{controller_}, game_title{game_title_} { if (SDL_Init(SDL_INIT_VIDEO) < 0) { UNREACHABLE_MSG("Failed to initialize SDL video subsystem: {}", SDL_GetError()); } SDL_InitSubSystem(SDL_INIT_AUDIO); - const std::string title = "shadPS4 v" + std::string(Common::VERSION); + const std::string title = "shadPS4 v" + std::string(Common::VERSION) + " | " + game_title; SDL_PropertiesID props = SDL_CreateProperties(); SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, title.c_str()); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_X_NUMBER, SDL_WINDOWPOS_CENTERED); diff --git a/src/sdl_window.h b/src/sdl_window.h index 6e14fbd0..688a4407 100644 --- a/src/sdl_window.h +++ b/src/sdl_window.h @@ -3,6 +3,7 @@ #pragma once +#include #include "common/types.h" struct SDL_Window; @@ -40,7 +41,8 @@ struct WindowSystemInfo { class WindowSDL { public: - explicit WindowSDL(s32 width, s32 height, Input::GameController* controller); + explicit WindowSDL(s32 width, s32 height, Input::GameController* controller, + std::string game_title); ~WindowSDL(); s32 getWidth() const { @@ -68,6 +70,7 @@ private: private: s32 width; s32 height; + std::string game_title; Input::GameController* controller; WindowSystemInfo window_info{}; SDL_Window* window{}; From a475b38e5f2b3fe6961a75644e699a225385d313 Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 24 Jul 2024 01:53:07 -0600 Subject: [PATCH 05/44] - fixed sceAppContentTemporaryDataMount2 --- src/common/config.cpp | 2 +- src/core/libraries/app_content/app_content.cpp | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/common/config.cpp b/src/common/config.cpp index a577b143..218575ff 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -220,7 +220,7 @@ void load(const std::filesystem::path& path) { auto general = generalResult.unwrap(); isNeo = toml::find_or(general, "isPS4Pro", false); - isFullscreen = toml::find_or(general, "Fullscreen", true); + isFullscreen = toml::find_or(general, "Fullscreen", false); logFilter = toml::find_or(general, "logFilter", ""); logType = toml::find_or(general, "logType", "sync"); isShowSplash = toml::find_or(general, "showSplash", true); diff --git a/src/core/libraries/app_content/app_content.cpp b/src/core/libraries/app_content/app_content.cpp index 3c9b4e1e..882f99e4 100644 --- a/src/core/libraries/app_content/app_content.cpp +++ b/src/core/libraries/app_content/app_content.cpp @@ -200,14 +200,7 @@ int PS4_SYSV_ABI sceAppContentTemporaryDataMount2(OrbisAppContentTemporaryDataOp OrbisAppContentMountPoint* mountPoint) { if (mountPoint == nullptr) return ORBIS_APP_CONTENT_ERROR_PARAMETER; - auto* param_sfo = Common::Singleton::Instance(); - std::string id(param_sfo->GetString("CONTENT_ID"), 7, 9); - const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::TempDataDir) / id; - auto* mnt = Common::Singleton::Instance(); - if (std::string(mountPoint->data).empty()) // killzone - mnt->Mount(mount_dir, "/temp0"); - else - mnt->Mount(mount_dir, mountPoint->data); + strncpy(mountPoint->data, "/temp0", 16); LOG_INFO(Lib_AppContent, "sceAppContentTemporaryDataMount2: option = {}, mountPoint = {}", option, mountPoint->data); return ORBIS_OK; From b4916ef2cab28ad77e4157fb5eb3d5a70a271f7b Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Wed, 24 Jul 2024 19:02:22 +0300 Subject: [PATCH 06/44] some fixup to playgo , makes Worms go further --- CMakeLists.txt | 2 ++ src/core/file_format/playgo_chunk.cpp | 16 ++++++++++++++ src/core/file_format/playgo_chunk.h | 31 +++++++++++++++++++++++++++ src/core/libraries/playgo/playgo.cpp | 18 +++++++++++----- 4 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 src/core/file_format/playgo_chunk.cpp create mode 100644 src/core/file_format/playgo_chunk.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ec7cd54..880d1cf5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -308,6 +308,8 @@ set(CORE src/core/aerolib/stubs.cpp src/core/file_format/pkg_type.h src/core/file_format/psf.cpp src/core/file_format/psf.h + src/core/file_format/playgo_chunk.cpp + src/core/file_format/playgo_chunk.h src/core/file_format/trp.cpp src/core/file_format/trp.h src/core/file_format/splash.h diff --git a/src/core/file_format/playgo_chunk.cpp b/src/core/file_format/playgo_chunk.cpp new file mode 100644 index 00000000..43d8a4de --- /dev/null +++ b/src/core/file_format/playgo_chunk.cpp @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/io_file.h" + +#include "playgo_chunk.h" + +bool PlaygoChunk::Open(const std::filesystem::path& filepath) { + Common::FS::IOFile file(filepath, Common::FS::FileAccessMode::Read); + if (!file.IsOpen()) { + return false; + } + file.Read(playgoHeader); + + return true; +} \ No newline at end of file diff --git a/src/core/file_format/playgo_chunk.h b/src/core/file_format/playgo_chunk.h new file mode 100644 index 00000000..d17d24bf --- /dev/null +++ b/src/core/file_format/playgo_chunk.h @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include +#include "common/types.h" + +struct PlaygoHeader { + u32 magic; + + u16 version_major; + u16 version_minor; + u16 image_count; + u16 chunk_count; + u16 mchunk_count; + u16 scenario_count; + // TODO fill the rest +}; +class PlaygoChunk { +public: + PlaygoChunk() = default; + ~PlaygoChunk() = default; + + bool Open(const std::filesystem::path& filepath); + PlaygoHeader GetPlaygoHeader() { + return playgoHeader; + } + +private: + PlaygoHeader playgoHeader; +}; \ No newline at end of file diff --git a/src/core/libraries/playgo/playgo.cpp b/src/core/libraries/playgo/playgo.cpp index e029413e..a3af8b4c 100644 --- a/src/core/libraries/playgo/playgo.cpp +++ b/src/core/libraries/playgo/playgo.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include #include "common/logging/log.h" #include "common/singleton.h" #include "core/libraries/error_codes.h" @@ -50,9 +51,16 @@ s32 PS4_SYSV_ABI scePlayGoGetLocus(OrbisPlayGoHandle handle, const OrbisPlayGoCh uint32_t numberOfEntries, OrbisPlayGoLocus* outLoci) { LOG_ERROR(Lib_PlayGo, "(STUBBED)called handle = {}, chunkIds = {}, numberOfEntries = {}", handle, *chunkIds, numberOfEntries); - // assign all now so that scePlayGoGetLocus is not called again for every single entry - std::fill(outLoci, outLoci + numberOfEntries, - OrbisPlayGoLocusValue::ORBIS_PLAYGO_LOCUS_LOCAL_FAST); + + auto* playgo = Common::Singleton::Instance(); + + for (uint32_t i = 0; i < numberOfEntries; i++) { + if (chunkIds[i] <= playgo->GetPlaygoHeader().mchunk_count) { + outLoci[i] = OrbisPlayGoLocusValue::ORBIS_PLAYGO_LOCUS_LOCAL_FAST; + } else { + return ORBIS_PLAYGO_ERROR_BAD_CHUNK_ID; + } + } return ORBIS_OK; } @@ -68,7 +76,7 @@ s32 PS4_SYSV_ABI scePlayGoGetProgress(OrbisPlayGoHandle handle, const OrbisPlayG s32 PS4_SYSV_ABI scePlayGoGetToDoList(OrbisPlayGoHandle handle, OrbisPlayGoToDo* outTodoList, u32 numberOfEntries, u32* outEntries) { LOG_ERROR(Lib_PlayGo, "(STUBBED)called"); - if (handle != shadMagic) + if (handle != 1) return ORBIS_PLAYGO_ERROR_BAD_HANDLE; if (outTodoList == nullptr) return ORBIS_PLAYGO_ERROR_BAD_POINTER; @@ -86,7 +94,7 @@ s32 PS4_SYSV_ABI scePlayGoInitialize(OrbisPlayGoInitParams* param) { } s32 PS4_SYSV_ABI scePlayGoOpen(OrbisPlayGoHandle* outHandle, const void* param) { - *outHandle = shadMagic; + *outHandle = 1; LOG_INFO(Lib_PlayGo, "(STUBBED)called"); return ORBIS_OK; } From b62836d29f3a824440ddb172190dd84288700388 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Wed, 24 Jul 2024 19:02:38 +0300 Subject: [PATCH 07/44] forgot a file --- src/emulator.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/emulator.cpp b/src/emulator.cpp index 7985e9e2..e8c53725 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include #include #include #include @@ -79,6 +80,9 @@ void Emulator::Run(const std::filesystem::path& file) { u32 fw_version = param_sfo->GetInteger("SYSTEM_VER"); app_version = param_sfo->GetString("APP_VER"); LOG_INFO(Loader, "Fw: {:#x} App Version: {}", fw_version, app_version); + } else if (entry.path().filename() == "playgo-chunk.dat") { + auto* playgo = Common::Singleton::Instance(); + playgo->Open(sce_sys_folder.string() + "/playgo-chunk.dat"); } else if (entry.path().filename() == "pic0.png" || entry.path().filename() == "pic1.png") { auto* splash = Common::Singleton::Instance(); From fa76a723adeef84b4ca51ede771b600f2ad7a1cf Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Thu, 25 Jul 2024 01:13:14 -0600 Subject: [PATCH 08/44] Applied feedback from @raphaelthegreat --- src/core/libraries/kernel/memory_management.cpp | 5 +++-- src/core/libraries/kernel/memory_management.h | 8 ++++++++ src/core/libraries/kernel/thread_management.cpp | 5 +++++ src/emulator.cpp | 3 ++- src/sdl_window.cpp | 6 +++--- src/sdl_window.h | 3 +-- 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/core/libraries/kernel/memory_management.cpp b/src/core/libraries/kernel/memory_management.cpp index e0509fb4..7ba85de2 100644 --- a/src/core/libraries/kernel/memory_management.cpp +++ b/src/core/libraries/kernel/memory_management.cpp @@ -228,7 +228,8 @@ int PS4_SYSV_ABI sceKernelGetDirectMemoryType(u64 addr, int* directMemoryTypeOut s32 PS4_SYSV_ABI sceKernelBatchMap(OrbisKernelBatchMapEntry* entries, int numEntries, int* numEntriesOut) { - return sceKernelBatchMap2(entries, numEntries, numEntriesOut, 0x10); // 0x10 : Fixed / 0x410 + return sceKernelBatchMap2(entries, numEntries, numEntriesOut, + MemoryFlags::SCE_KERNEL_MAP_FIXED); // 0x10, 0x410? } int PS4_SYSV_ABI sceKernelMunmap(void* addr, size_t len); @@ -243,7 +244,7 @@ s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEn break; // break and assign a value to numEntriesOut. } - if (entries[i].operation == 0) { // MAP_DIRECT + if (entries[i].operation == MemoryOpTypes::SCE_KERNEL_MAP_OP_MAP_DIRECT) { result = sceKernelMapNamedDirectMemory(&entries[i].start, entries[i].length, entries[i].protection, flags, static_cast(entries[i].offset), 0, ""); diff --git a/src/core/libraries/kernel/memory_management.h b/src/core/libraries/kernel/memory_management.h index 25434ecb..df94e677 100644 --- a/src/core/libraries/kernel/memory_management.h +++ b/src/core/libraries/kernel/memory_management.h @@ -31,6 +31,14 @@ enum MemoryProtection : u32 { SCE_KERNEL_PROT_GPU_RW = 0x30 // Permit reads/writes from the GPU }; +enum MemoryOpTypes : u32 { + SCE_KERNEL_MAP_OP_MAP_DIRECT = 0, + SCE_KERNEL_MAP_OP_UNMAP = 1, + SCE_KERNEL_MAP_OP_PROTECT = 2, + SCE_KERNEL_MAP_OP_MAP_FLEXIBLE = 3, + SCE_KERNEL_MAP_OP_TYPE_PROTECT = 4 +}; + struct OrbisQueryInfo { uintptr_t start; uintptr_t end; diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index bbd926d0..b18bb043 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -1336,6 +1336,10 @@ int PS4_SYSV_ABI posix_sem_wait(sem_t* sem) { return sem_wait(sem); } +int PS4_SYSV_ABI posix_sem_timedwait(sem_t* sem, const timespec* t) { + return sem_timedwait(sem, t); +} + int PS4_SYSV_ABI posix_sem_post(sem_t* sem) { return sem_post(sem); } @@ -1543,6 +1547,7 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("Xs9hdiD7sAA", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_setschedparam); LIB_FUNCTION("pDuPEf3m4fI", "libScePosix", 1, "libkernel", 1, 1, posix_sem_init); LIB_FUNCTION("YCV5dGGBcCo", "libScePosix", 1, "libkernel", 1, 1, posix_sem_wait); + LIB_FUNCTION("w5IHyvahg-o", "libScePosix", 1, "libkernel", 1, 1, posix_sem_timedwait); LIB_FUNCTION("IKP8typ0QUk", "libScePosix", 1, "libkernel", 1, 1, posix_sem_post); LIB_FUNCTION("cDW233RAwWo", "libScePosix", 1, "libkernel", 1, 1, posix_sem_destroy); LIB_FUNCTION("Bq+LRV-N6Hk", "libScePosix", 1, "libkernel", 1, 1, posix_sem_getvalue); diff --git a/src/emulator.cpp b/src/emulator.cpp index e8c53725..e617a975 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -95,7 +95,8 @@ void Emulator::Run(const std::filesystem::path& file) { } } } - std::string game_title = id + " - " + title + " <" + app_version + ">"; + std::string game_title = fmt::format("{} - {} <{}>", id, title, app_version); + window = std::make_unique(WindowWidth, WindowHeight, controller, game_title); diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index c0e9afdd..6d3e6848 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -19,14 +19,14 @@ namespace Frontend { WindowSDL::WindowSDL(s32 width_, s32 height_, Input::GameController* controller_, - std::string game_title_) - : width{width_}, height{height_}, controller{controller_}, game_title{game_title_} { + std::string_view game_title) + : width{width_}, height{height_}, controller{controller_}{ if (SDL_Init(SDL_INIT_VIDEO) < 0) { UNREACHABLE_MSG("Failed to initialize SDL video subsystem: {}", SDL_GetError()); } SDL_InitSubSystem(SDL_INIT_AUDIO); - const std::string title = "shadPS4 v" + std::string(Common::VERSION) + " | " + game_title; + const std::string title = fmt::format("shadPS4 v{} | {}", Common::VERSION, game_title); SDL_PropertiesID props = SDL_CreateProperties(); SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, title.c_str()); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_X_NUMBER, SDL_WINDOWPOS_CENTERED); diff --git a/src/sdl_window.h b/src/sdl_window.h index 688a4407..89b2a877 100644 --- a/src/sdl_window.h +++ b/src/sdl_window.h @@ -42,7 +42,7 @@ struct WindowSystemInfo { class WindowSDL { public: explicit WindowSDL(s32 width, s32 height, Input::GameController* controller, - std::string game_title); + std::string_view game_title); ~WindowSDL(); s32 getWidth() const { @@ -70,7 +70,6 @@ private: private: s32 width; s32 height; - std::string game_title; Input::GameController* controller; WindowSystemInfo window_info{}; SDL_Window* window{}; From a11ac5a687501da0dadb6fbb0689d424bc74b4ab Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Thu, 25 Jul 2024 01:15:44 -0600 Subject: [PATCH 09/44] ... --- src/sdl_window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index 6d3e6848..4570b64e 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -20,7 +20,7 @@ namespace Frontend { WindowSDL::WindowSDL(s32 width_, s32 height_, Input::GameController* controller_, std::string_view game_title) - : width{width_}, height{height_}, controller{controller_}{ + : width{width_}, height{height_}, controller{controller_} { if (SDL_Init(SDL_INIT_VIDEO) < 0) { UNREACHABLE_MSG("Failed to initialize SDL video subsystem: {}", SDL_GetError()); } From 64d305faeb8440bf0006039d423aff82c5822918 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Fri, 26 Jul 2024 08:08:47 +0300 Subject: [PATCH 10/44] cleanup memory_management --- src/core/libraries/kernel/memory_management.cpp | 4 ++-- src/core/libraries/kernel/memory_management.h | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/libraries/kernel/memory_management.cpp b/src/core/libraries/kernel/memory_management.cpp index 7ba85de2..988b69d0 100644 --- a/src/core/libraries/kernel/memory_management.cpp +++ b/src/core/libraries/kernel/memory_management.cpp @@ -244,7 +244,7 @@ s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEn break; // break and assign a value to numEntriesOut. } - if (entries[i].operation == MemoryOpTypes::SCE_KERNEL_MAP_OP_MAP_DIRECT) { + if (entries[i].operation == MemoryOpTypes::ORBIS_KERNEL_MAP_OP_MAP_DIRECT) { result = sceKernelMapNamedDirectMemory(&entries[i].start, entries[i].length, entries[i].protection, flags, static_cast(entries[i].offset), 0, ""); @@ -257,7 +257,7 @@ s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEn if (result == 0) processed++; - } else if (entries[i].operation == 1) { + } else if (entries[i].operation == MemoryOpTypes::ORBIS_KERNEL_MAP_OP_UNMAP) { result = sceKernelMunmap(entries[i].start, entries[i].length); LOG_INFO(Kernel_Vmm, "BatchMap: entry = {}, operation = {}, len = {:#x}, result = {}", i, entries[i].operation, entries[i].length, result); diff --git a/src/core/libraries/kernel/memory_management.h b/src/core/libraries/kernel/memory_management.h index df94e677..cc89dfa7 100644 --- a/src/core/libraries/kernel/memory_management.h +++ b/src/core/libraries/kernel/memory_management.h @@ -32,11 +32,11 @@ enum MemoryProtection : u32 { }; enum MemoryOpTypes : u32 { - SCE_KERNEL_MAP_OP_MAP_DIRECT = 0, - SCE_KERNEL_MAP_OP_UNMAP = 1, - SCE_KERNEL_MAP_OP_PROTECT = 2, - SCE_KERNEL_MAP_OP_MAP_FLEXIBLE = 3, - SCE_KERNEL_MAP_OP_TYPE_PROTECT = 4 + ORBIS_KERNEL_MAP_OP_MAP_DIRECT = 0, + ORBIS_KERNEL_MAP_OP_UNMAP = 1, + ORBIS_KERNEL_MAP_OP_PROTECT = 2, + ORBIS_KERNEL_MAP_OP_MAP_FLEXIBLE = 3, + ORBIS_KERNEL_MAP_OP_TYPE_PROTECT = 4 }; struct OrbisQueryInfo { From a4912b8245ed8a55862feb61dd04b209e87dc009 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Fri, 26 Jul 2024 08:16:32 +0300 Subject: [PATCH 11/44] commented sem_timedwait for linux untill @squidbus fix it --- src/core/libraries/kernel/thread_management.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index b18bb043..3e9e1994 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -1337,7 +1337,12 @@ int PS4_SYSV_ABI posix_sem_wait(sem_t* sem) { } int PS4_SYSV_ABI posix_sem_timedwait(sem_t* sem, const timespec* t) { +#ifndef __APPLE__ return sem_timedwait(sem, t); +#else + LOG_ERROR(Kernel_Pthread, "Apple doesn't support sem_timedwait yet"); + return 0; // unsupported for apple yet +#endif } int PS4_SYSV_ABI posix_sem_post(sem_t* sem) { From 2841eba538f84c85139606c8ac4174bb07ffc64f Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Fri, 26 Jul 2024 08:50:39 +0300 Subject: [PATCH 12/44] added /dev/urandom --- src/core/libraries/kernel/file_system.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/core/libraries/kernel/file_system.cpp b/src/core/libraries/kernel/file_system.cpp index 8734b964..4a42b0d6 100644 --- a/src/core/libraries/kernel/file_system.cpp +++ b/src/core/libraries/kernel/file_system.cpp @@ -53,6 +53,9 @@ int PS4_SYSV_ABI sceKernelOpen(const char* path, int flags, u16 mode) { if (std::string_view{path} == "/dev/stdout") { return 2002; } + if (std::string_view{path} == "/dev/urandom") { + return 2003; + } u32 handle = h->CreateHandle(); auto* file = h->GetFile(handle); if (directory) { @@ -113,6 +116,9 @@ int PS4_SYSV_ABI sceKernelClose(int d) { if (d < 3) { // d probably hold an error code return ORBIS_KERNEL_ERROR_EPERM; } + if (d == 2003) { // dev/urandom case + return SCE_OK; + } auto* h = Common::Singleton::Instance(); auto* file = h->GetFile(d); if (file == nullptr) { @@ -223,6 +229,13 @@ s64 PS4_SYSV_ABI posix_lseek(int d, s64 offset, int whence) { } s64 PS4_SYSV_ABI sceKernelRead(int d, void* buf, size_t nbytes) { + if (d == 2003) // dev urandom case + { + auto rbuf = static_cast(buf); + for (size_t i = 0; i < nbytes; i++) + rbuf[i] = std::rand() & 0xFF; + return nbytes; + } auto* h = Common::Singleton::Instance(); auto* file = h->GetFile(d); if (file == nullptr) { @@ -460,6 +473,7 @@ s64 PS4_SYSV_ABI sceKernelPwrite(int d, void* buf, size_t nbytes, s64 offset) { } void fileSystemSymbolsRegister(Core::Loader::SymbolsResolver* sym) { + std::srand(std::time(nullptr)); LIB_FUNCTION("1G3lF1Gg1k8", "libkernel", 1, "libkernel", 1, 1, sceKernelOpen); LIB_FUNCTION("wuCroIGjt2g", "libScePosix", 1, "libkernel", 1, 1, posix_open); LIB_FUNCTION("UK2Tl2DWUns", "libkernel", 1, "libkernel", 1, 1, sceKernelClose); From 600a13c38fb963ddb26653db87dd3e27497c8ab8 Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Fri, 26 Jul 2024 08:07:22 -0600 Subject: [PATCH 13/44] fs: added /download0 mount fs: get rid of double slashes --- src/common/path_util.cpp | 1 + src/common/path_util.h | 2 ++ src/core/file_sys/fs.cpp | 22 +++++++++++++--------- src/emulator.cpp | 7 +++++++ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/common/path_util.cpp b/src/common/path_util.cpp index 429fe2a5..f0f56b85 100644 --- a/src/common/path_util.cpp +++ b/src/common/path_util.cpp @@ -72,6 +72,7 @@ static auto UserPaths = [] { create_path(PathType::GameDataDir, user_dir / GAMEDATA_DIR); create_path(PathType::TempDataDir, user_dir / TEMPDATA_DIR); create_path(PathType::SysModuleDir, user_dir / SYSMODULES_DIR); + create_path(PathType::DownloadDir, user_dir / DOWNLOAD_DIR); return paths; }(); diff --git a/src/common/path_util.h b/src/common/path_util.h index 57a9a73f..67688f89 100644 --- a/src/common/path_util.h +++ b/src/common/path_util.h @@ -18,6 +18,7 @@ enum class PathType { TempDataDir, // Where game temp data is stored. GameDataDir, // Where game data is stored. SysModuleDir, // Where system modules are stored. + DownloadDir, // Where downloads/temp files are stored. }; constexpr auto PORTABLE_DIR = "user"; @@ -31,6 +32,7 @@ constexpr auto SAVEDATA_DIR = "savedata"; constexpr auto GAMEDATA_DIR = "data"; constexpr auto TEMPDATA_DIR = "temp"; constexpr auto SYSMODULES_DIR = "sys_modules"; +constexpr auto DOWNLOAD_DIR = "download"; // Filenames constexpr auto LOG_FILE = "shad_log.txt"; diff --git a/src/core/file_sys/fs.cpp b/src/core/file_sys/fs.cpp index 2f57c9f3..3177770b 100644 --- a/src/core/file_sys/fs.cpp +++ b/src/core/file_sys/fs.cpp @@ -26,23 +26,27 @@ void MntPoints::UnmountAll() { } std::filesystem::path MntPoints::GetHostPath(const std::string& guest_directory) { - const MntPair* mount = GetMount(guest_directory); + // Evil games like Turok2 pass double slashes e.g /app0//game.kpf + auto corrected_path = guest_directory; + size_t pos = corrected_path.find("//"); + while (pos != std::string::npos) { + corrected_path.replace(pos, 2, "/"); + pos = corrected_path.find("//", pos + 1); + } + + const MntPair* mount = GetMount(corrected_path); if (!mount) { - return guest_directory; + return ""; } // Nothing to do if getting the mount itself. - if (guest_directory == mount->mount) { + if (corrected_path == mount->mount) { return mount->host_path; } // Remove device (e.g /app0) from path to retrieve relative path. - u32 pos = mount->mount.size() + 1; - // Evil games like Turok2 pass double slashes e.g /app0//game.kpf - if (guest_directory[pos] == '/') { - pos++; - } - const auto rel_path = std::string_view(guest_directory).substr(pos); + pos = mount->mount.size() + 1; + const auto rel_path = std::string_view(corrected_path).substr(pos); const auto host_path = mount->host_path / rel_path; if (!NeedsCaseInsensiveSearch) { return host_path; diff --git a/src/emulator.cpp b/src/emulator.cpp index e617a975..0b542e68 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -113,6 +113,13 @@ void Emulator::Run(const std::filesystem::path& file) { } mnt->Mount(mount_temp_dir, "/temp0"); // called in app_content ==> stat/mkdir + const auto& mount_download_dir = + Common::FS::GetUserPath(Common::FS::PathType::DownloadDir) / id; + if (!std::filesystem::exists(mount_download_dir)) { + std::filesystem::create_directory(mount_download_dir); + } + mnt->Mount(mount_download_dir, "/download0"); + // Initialize kernel and library facilities. Libraries::Kernel::init_pthreads(); Libraries::InitHLELibs(&linker->GetHLESymbols()); From d84b4adc831037137ad7da211be3ef17a83e9819 Mon Sep 17 00:00:00 2001 From: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com> Date: Sat, 27 Jul 2024 17:18:18 +0300 Subject: [PATCH 14/44] semaphore: Yet another race condition fix (#327) --- src/core/libraries/kernel/threads/semaphore.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/core/libraries/kernel/threads/semaphore.cpp b/src/core/libraries/kernel/threads/semaphore.cpp index bfa6a68d..370dba44 100644 --- a/src/core/libraries/kernel/threads/semaphore.cpp +++ b/src/core/libraries/kernel/threads/semaphore.cpp @@ -41,7 +41,6 @@ public: AddWaiter(waiter); // Perform the wait. - std::exchange(lk, std::unique_lock{waiter.mutex}); return waiter.Wait(lk, timeout); } @@ -59,10 +58,9 @@ public: it++; continue; } - std::scoped_lock lk2{waiter.mutex}; + it = wait_list.erase(it); token_count -= waiter.need_count; waiter.cv.notify_one(); - it = wait_list.erase(it); } return true; @@ -84,7 +82,6 @@ public: public: struct WaitingThread : public ListBaseHook { - std::mutex mutex; std::string name; std::condition_variable cv; u32 priority; From 680192a0c452d2f0d79582494c4e0a6e47e6e365 Mon Sep 17 00:00:00 2001 From: Vinicius Rangel Date: Sat, 27 Jul 2024 11:23:59 -0300 Subject: [PATCH 15/44] 64 bits OP, impl V_ADDC_U32 & V_MAD_U64_U32 (#310) * impl V_ADDC_U32 & V_MAD_U64_U32 * shader recompiler: add 64 bits version to get register / GetSrc * fix V_ADDC_U32 carry * shader recompiler: removed automatic conversion to force_flt in GetSRc * shader recompiler: auto cast between u32 and u64 during ssa pass * shader recompiler: fix SetVectorReg64 & standardize switches-case * shader translate: fix overflow detection in V_ADD_I32 use vcc lo instead of vcc thread bit * shader recompiler: more 64-bit work - removed bit_size parameter from Get[Scalar/Vector]Register - add BitwiseOr64 - add SetDst64 as a replacement for SetScalarReg64 & SetVectorReg64 - add GetSrc64 for 64-bit value * shader recompiler: add V_MAD_U64_U32 vcc output - add V_MAD_U64_U32 vcc output - ILessThan for 64-bits * shader recompiler: removed unnecessary changes & missing consts * shader_recompiler: Add s64 type in constant propagation --- .../backend/spirv/emit_spirv_instructions.h | 8 +- .../backend/spirv/emit_spirv_integer.cpp | 23 +- src/shader_recompiler/frontend/opcodes.h | 8 +- .../frontend/translate/translate.cpp | 208 +++++++++++++++++- .../frontend/translate/translate.h | 8 +- .../frontend/translate/vector_alu.cpp | 44 +++- src/shader_recompiler/ir/ir_emitter.cpp | 67 +++++- src/shader_recompiler/ir/ir_emitter.h | 6 +- src/shader_recompiler/ir/opcodes.inc | 8 +- .../ir/passes/constant_propogation_pass.cpp | 12 +- .../ir/passes/ssa_rewrite_pass.cpp | 8 +- src/shader_recompiler/ir/value.h | 1 + 12 files changed, 361 insertions(+), 40 deletions(-) diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h index e2b411e4..80dd66b1 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h +++ b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h @@ -258,6 +258,7 @@ Id EmitISub64(EmitContext& ctx, Id a, Id b); Id EmitSMulExt(EmitContext& ctx, Id a, Id b); Id EmitUMulExt(EmitContext& ctx, Id a, Id b); Id EmitIMul32(EmitContext& ctx, Id a, Id b); +Id EmitIMul64(EmitContext& ctx, Id a, Id b); Id EmitSDiv32(EmitContext& ctx, Id a, Id b); Id EmitUDiv32(EmitContext& ctx, Id a, Id b); Id EmitINeg32(EmitContext& ctx, Id value); @@ -271,6 +272,7 @@ Id EmitShiftRightArithmetic32(EmitContext& ctx, Id base, Id shift); Id EmitShiftRightArithmetic64(EmitContext& ctx, Id base, Id shift); Id EmitBitwiseAnd32(EmitContext& ctx, IR::Inst* inst, Id a, Id b); Id EmitBitwiseOr32(EmitContext& ctx, IR::Inst* inst, Id a, Id b); +Id EmitBitwiseOr64(EmitContext& ctx, IR::Inst* inst, Id a, Id b); Id EmitBitwiseXor32(EmitContext& ctx, IR::Inst* inst, Id a, Id b); Id EmitBitFieldInsert(EmitContext& ctx, Id base, Id insert, Id offset, Id count); Id EmitBitFieldSExtract(EmitContext& ctx, IR::Inst* inst, Id base, Id offset, Id count); @@ -286,8 +288,10 @@ Id EmitSMax32(EmitContext& ctx, Id a, Id b); Id EmitUMax32(EmitContext& ctx, Id a, Id b); Id EmitSClamp32(EmitContext& ctx, IR::Inst* inst, Id value, Id min, Id max); Id EmitUClamp32(EmitContext& ctx, IR::Inst* inst, Id value, Id min, Id max); -Id EmitSLessThan(EmitContext& ctx, Id lhs, Id rhs); -Id EmitULessThan(EmitContext& ctx, Id lhs, Id rhs); +Id EmitSLessThan32(EmitContext& ctx, Id lhs, Id rhs); +Id EmitSLessThan64(EmitContext& ctx, Id lhs, Id rhs); +Id EmitULessThan32(EmitContext& ctx, Id lhs, Id rhs); +Id EmitULessThan64(EmitContext& ctx, Id lhs, Id rhs); Id EmitIEqual(EmitContext& ctx, Id lhs, Id rhs); Id EmitSLessThanEqual(EmitContext& ctx, Id lhs, Id rhs); Id EmitULessThanEqual(EmitContext& ctx, Id lhs, Id rhs); diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp index d5a0f276..019ceb01 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp @@ -84,6 +84,10 @@ Id EmitIMul32(EmitContext& ctx, Id a, Id b) { return ctx.OpIMul(ctx.U32[1], a, b); } +Id EmitIMul64(EmitContext& ctx, Id a, Id b) { + return ctx.OpIMul(ctx.U64, a, b); +} + Id EmitSDiv32(EmitContext& ctx, Id a, Id b) { return ctx.OpSDiv(ctx.U32[1], a, b); } @@ -142,6 +146,13 @@ Id EmitBitwiseOr32(EmitContext& ctx, IR::Inst* inst, Id a, Id b) { return result; } +Id EmitBitwiseOr64(EmitContext& ctx, IR::Inst* inst, Id a, Id b) { + const Id result{ctx.OpBitwiseOr(ctx.U64, a, b)}; + SetZeroFlag(ctx, inst, result); + SetSignFlag(ctx, inst, result); + return result; +} + Id EmitBitwiseXor32(EmitContext& ctx, IR::Inst* inst, Id a, Id b) { const Id result{ctx.OpBitwiseXor(ctx.U32[1], a, b)}; SetZeroFlag(ctx, inst, result); @@ -231,11 +242,19 @@ Id EmitUClamp32(EmitContext& ctx, IR::Inst* inst, Id value, Id min, Id max) { return result; } -Id EmitSLessThan(EmitContext& ctx, Id lhs, Id rhs) { +Id EmitSLessThan32(EmitContext& ctx, Id lhs, Id rhs) { return ctx.OpSLessThan(ctx.U1[1], lhs, rhs); } -Id EmitULessThan(EmitContext& ctx, Id lhs, Id rhs) { +Id EmitSLessThan64(EmitContext& ctx, Id lhs, Id rhs) { + return ctx.OpSLessThan(ctx.U1[1], lhs, rhs); +} + +Id EmitULessThan32(EmitContext& ctx, Id lhs, Id rhs) { + return ctx.OpULessThan(ctx.U1[1], lhs, rhs); +} + +Id EmitULessThan64(EmitContext& ctx, Id lhs, Id rhs) { return ctx.OpULessThan(ctx.U1[1], lhs, rhs); } diff --git a/src/shader_recompiler/frontend/opcodes.h b/src/shader_recompiler/frontend/opcodes.h index d38140d8..cdc1e474 100644 --- a/src/shader_recompiler/frontend/opcodes.h +++ b/src/shader_recompiler/frontend/opcodes.h @@ -2392,10 +2392,10 @@ enum class OperandField : u32 { ConstFloatPos_4_0, ConstFloatNeg_4_0, VccZ = 251, - ExecZ, - Scc, - LdsDirect, - LiteralConst, + ExecZ = 252, + Scc = 253, + LdsDirect = 254, + LiteralConst = 255, VectorGPR, Undefined = 0xFFFFFFFF, diff --git a/src/shader_recompiler/frontend/translate/translate.cpp b/src/shader_recompiler/frontend/translate/translate.cpp index 15052b2a..c4c6e505 100644 --- a/src/shader_recompiler/frontend/translate/translate.cpp +++ b/src/shader_recompiler/frontend/translate/translate.cpp @@ -76,21 +76,21 @@ void Translator::EmitPrologue() { } } +template <> IR::U32F32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { - // Input modifiers work on float values. - force_flt |= operand.input_modifier.abs | operand.input_modifier.neg; - IR::U32F32 value{}; + + const bool is_float = operand.type == ScalarType::Float32 || force_flt; switch (operand.field) { case OperandField::ScalarGPR: - if (operand.type == ScalarType::Float32 || force_flt) { + if (is_float) { value = ir.GetScalarReg(IR::ScalarReg(operand.code)); } else { value = ir.GetScalarReg(IR::ScalarReg(operand.code)); } break; case OperandField::VectorGPR: - if (operand.type == ScalarType::Float32 || force_flt) { + if (is_float) { value = ir.GetVectorReg(IR::VectorReg(operand.code)); } else { value = ir.GetVectorReg(IR::VectorReg(operand.code)); @@ -164,15 +164,160 @@ IR::U32F32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { UNREACHABLE(); } - if (operand.input_modifier.abs) { - value = ir.FPAbs(value); - } - if (operand.input_modifier.neg) { - value = ir.FPNeg(value); + if (is_float) { + if (operand.input_modifier.abs) { + value = ir.FPAbs(value); + } + if (operand.input_modifier.neg) { + value = ir.FPNeg(value); + } } return value; } +template <> +IR::U32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { + return GetSrc(operand, force_flt); +} + +template <> +IR::F32 Translator::GetSrc(const InstOperand& operand, bool) { + return GetSrc(operand, true); +} + +template <> +IR::U64F64 Translator::GetSrc64(const InstOperand& operand, bool force_flt) { + IR::Value value_hi{}; + IR::Value value_lo{}; + + bool immediate = false; + const bool is_float = operand.type == ScalarType::Float64 || force_flt; + switch (operand.field) { + case OperandField::ScalarGPR: + if (is_float) { + value_lo = ir.GetScalarReg(IR::ScalarReg(operand.code)); + value_hi = ir.GetScalarReg(IR::ScalarReg(operand.code + 1)); + } else if (operand.type == ScalarType::Uint64 || operand.type == ScalarType::Sint64) { + value_lo = ir.GetScalarReg(IR::ScalarReg(operand.code)); + value_hi = ir.GetScalarReg(IR::ScalarReg(operand.code + 1)); + } else { + UNREACHABLE(); + } + break; + case OperandField::VectorGPR: + if (is_float) { + value_lo = ir.GetVectorReg(IR::VectorReg(operand.code)); + value_hi = ir.GetVectorReg(IR::VectorReg(operand.code + 1)); + } else if (operand.type == ScalarType::Uint64 || operand.type == ScalarType::Sint64) { + value_lo = ir.GetVectorReg(IR::VectorReg(operand.code)); + value_hi = ir.GetVectorReg(IR::VectorReg(operand.code + 1)); + } else { + UNREACHABLE(); + } + break; + case OperandField::ConstZero: + immediate = true; + if (force_flt) { + value_lo = ir.Imm64(0.0); + } else { + value_lo = ir.Imm64(u64(0U)); + } + break; + case OperandField::SignedConstIntPos: + ASSERT(!force_flt); + immediate = true; + value_lo = ir.Imm64(s64(operand.code) - SignedConstIntPosMin + 1); + break; + case OperandField::SignedConstIntNeg: + ASSERT(!force_flt); + immediate = true; + value_lo = ir.Imm64(-s64(operand.code) + SignedConstIntNegMin - 1); + break; + case OperandField::LiteralConst: + immediate = true; + if (force_flt) { + UNREACHABLE(); // There is a literal double? + } else { + value_lo = ir.Imm64(u64(operand.code)); + } + break; + case OperandField::ConstFloatPos_1_0: + immediate = true; + if (force_flt) { + value_lo = ir.Imm64(1.0); + } else { + value_lo = ir.Imm64(std::bit_cast(f64(1.0))); + } + break; + case OperandField::ConstFloatPos_0_5: + immediate = true; + value_lo = ir.Imm64(0.5); + break; + case OperandField::ConstFloatPos_2_0: + immediate = true; + value_lo = ir.Imm64(2.0); + break; + case OperandField::ConstFloatPos_4_0: + immediate = true; + value_lo = ir.Imm64(4.0); + break; + case OperandField::ConstFloatNeg_0_5: + immediate = true; + value_lo = ir.Imm64(-0.5); + break; + case OperandField::ConstFloatNeg_1_0: + immediate = true; + value_lo = ir.Imm64(-1.0); + break; + case OperandField::ConstFloatNeg_2_0: + immediate = true; + value_lo = ir.Imm64(-2.0); + break; + case OperandField::ConstFloatNeg_4_0: + immediate = true; + value_lo = ir.Imm64(-4.0); + break; + case OperandField::VccLo: { + value_lo = ir.GetVccLo(); + value_hi = ir.GetVccHi(); + } break; + case OperandField::VccHi: + UNREACHABLE(); + default: + UNREACHABLE(); + } + + IR::Value value; + + if (immediate) { + value = value_lo; + } else if (is_float) { + throw NotImplementedException("required OpPackDouble2x32 implementation"); + } else { + IR::Value packed = ir.CompositeConstruct(value_lo, value_hi); + value = ir.PackUint2x32(packed); + } + + if (is_float) { + if (operand.input_modifier.abs) { + value = ir.FPAbs(IR::F32F64(value)); + } + if (operand.input_modifier.neg) { + value = ir.FPNeg(IR::F32F64(value)); + } + } + return IR::U64F64(value); +} + +template <> +IR::U64 Translator::GetSrc64(const InstOperand& operand, bool force_flt) { + return GetSrc64(operand, force_flt); +} +template <> +IR::F64 Translator::GetSrc64(const InstOperand& operand, bool) { + return GetSrc64(operand, true); +} + void Translator::SetDst(const InstOperand& operand, const IR::U32F32& value) { IR::U32F32 result = value; if (operand.output_modifier.multiplier != 0.f) { @@ -197,6 +342,43 @@ void Translator::SetDst(const InstOperand& operand, const IR::U32F32& value) { } } +void Translator::SetDst64(const InstOperand& operand, const IR::U64F64& value_raw) { + IR::U64F64 value_untyped = value_raw; + + const bool is_float = value_raw.Type() == IR::Type::F64 || value_raw.Type() == IR::Type::F32; + if (is_float) { + if (operand.output_modifier.multiplier != 0.f) { + value_untyped = + ir.FPMul(value_untyped, ir.Imm64(f64(operand.output_modifier.multiplier))); + } + if (operand.output_modifier.clamp) { + value_untyped = ir.FPSaturate(value_raw); + } + } + const IR::U64 value = + is_float ? ir.BitCast(IR::F64{value_untyped}) : IR::U64{value_untyped}; + + const IR::Value unpacked{ir.UnpackUint2x32(value)}; + const IR::U32 lo{ir.CompositeExtract(unpacked, 0U)}; + const IR::U32 hi{ir.CompositeExtract(unpacked, 1U)}; + switch (operand.field) { + case OperandField::ScalarGPR: + ir.SetScalarReg(IR::ScalarReg(operand.code + 1), hi); + return ir.SetScalarReg(IR::ScalarReg(operand.code), lo); + case OperandField::VectorGPR: + ir.SetVectorReg(IR::VectorReg(operand.code + 1), hi); + return ir.SetVectorReg(IR::VectorReg(operand.code), lo); + case OperandField::VccLo: + UNREACHABLE(); + case OperandField::VccHi: + UNREACHABLE(); + case OperandField::M0: + break; + default: + UNREACHABLE(); + } +} + void Translator::EmitFetch(const GcnInst& inst) { // Read the pointer to the fetch shader assembly. const u32 sgpr_base = inst.src[0].code; @@ -320,6 +502,9 @@ void Translate(IR::Block* block, u32 block_base, std::span inst_l case Opcode::V_ADD_I32: translator.V_ADD_I32(inst); break; + case Opcode::V_ADDC_U32: + translator.V_ADDC_U32(inst); + break; case Opcode::V_CVT_F32_I32: translator.V_CVT_F32_I32(inst); break; @@ -470,6 +655,9 @@ void Translate(IR::Block* block, u32 block_base, std::span inst_l case Opcode::IMAGE_LOAD: translator.IMAGE_LOAD(false, inst); break; + case Opcode::V_MAD_U64_U32: + translator.V_MAD_U64_U32(inst); + break; case Opcode::V_CMP_GE_I32: translator.V_CMP_U32(ConditionOp::GE, true, false, inst); break; diff --git a/src/shader_recompiler/frontend/translate/translate.h b/src/shader_recompiler/frontend/translate/translate.h index 2aa6f712..3203ad73 100644 --- a/src/shader_recompiler/frontend/translate/translate.h +++ b/src/shader_recompiler/frontend/translate/translate.h @@ -100,6 +100,7 @@ public: void V_AND_B32(const GcnInst& inst); void V_LSHLREV_B32(const GcnInst& inst); void V_ADD_I32(const GcnInst& inst); + void V_ADDC_U32(const GcnInst& inst); void V_CVT_F32_I32(const GcnInst& inst); void V_CVT_F32_U32(const GcnInst& inst); void V_MAD_F32(const GcnInst& inst); @@ -129,6 +130,7 @@ public: void V_CVT_U32_F32(const GcnInst& inst); void V_SUBREV_F32(const GcnInst& inst); void V_SUBREV_I32(const GcnInst& inst); + void V_MAD_U64_U32(const GcnInst& inst); void V_CMP_U32(ConditionOp op, bool is_signed, bool set_exec, const GcnInst& inst); void V_LSHRREV_B32(const GcnInst& inst); void V_MUL_HI_U32(bool is_signed, const GcnInst& inst); @@ -186,8 +188,12 @@ public: void EXP(const GcnInst& inst); private: - IR::U32F32 GetSrc(const InstOperand& operand, bool flt_zero = false); + template + [[nodiscard]] T GetSrc(const InstOperand& operand, bool flt_zero = false); + template + [[nodiscard]] T GetSrc64(const InstOperand& operand, bool flt_zero = false); void SetDst(const InstOperand& operand, const IR::U32F32& value); + void SetDst64(const InstOperand& operand, const IR::U64F64& value_raw); private: IR::IREmitter ir; diff --git a/src/shader_recompiler/frontend/translate/vector_alu.cpp b/src/shader_recompiler/frontend/translate/vector_alu.cpp index ca648f88..1b2024f8 100644 --- a/src/shader_recompiler/frontend/translate/vector_alu.cpp +++ b/src/shader_recompiler/frontend/translate/vector_alu.cpp @@ -67,7 +67,8 @@ void Translator::V_OR_B32(bool is_xor, const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; const IR::VectorReg dst_reg{inst.dst[0].code}; - ir.SetVectorReg(dst_reg, is_xor ? ir.BitwiseXor(src0, src1) : ir.BitwiseOr(src0, src1)); + ir.SetVectorReg(dst_reg, + is_xor ? ir.BitwiseXor(src0, src1) : IR::U32(ir.BitwiseOr(src0, src1))); } void Translator::V_AND_B32(const GcnInst& inst) { @@ -92,6 +93,30 @@ void Translator::V_ADD_I32(const GcnInst& inst) { // TODO: Carry } +void Translator::V_ADDC_U32(const GcnInst& inst) { + + const auto src0 = GetSrc(inst.src[0]); + const auto src1 = GetSrc(inst.src[1]); + + IR::U32 scarry; + if (inst.src_count == 3) { // VOP3 + IR::U1 thread_bit{ir.GetThreadBitScalarReg(IR::ScalarReg(inst.src[2].code))}; + scarry = IR::U32{ir.Select(thread_bit, ir.Imm32(1), ir.Imm32(0))}; + } else { // VOP2 + scarry = ir.GetVccLo(); + } + + const IR::U32 result = ir.IAdd(ir.IAdd(src0, src1), scarry); + + const IR::VectorReg dst_reg{inst.dst[0].code}; + ir.SetVectorReg(dst_reg, result); + + const IR::U1 less_src0 = ir.ILessThan(result, src0, false); + const IR::U1 less_src1 = ir.ILessThan(result, src1, false); + const IR::U1 did_overflow = ir.LogicalOr(less_src0, less_src1); + ir.SetVcc(did_overflow); +} + void Translator::V_CVT_F32_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::VectorReg dst_reg{inst.dst[0].code}; @@ -294,6 +319,23 @@ void Translator::V_SUBREV_I32(const GcnInst& inst) { // TODO: Carry-out } +void Translator::V_MAD_U64_U32(const GcnInst& inst) { + + const auto src0 = GetSrc(inst.src[0]); + const auto src1 = GetSrc(inst.src[1]); + const auto src2 = GetSrc64(inst.src[2]); + + const IR::U64 mul_result = ir.UConvert(64, ir.IMul(src0, src1)); + const IR::U64 sum_result = ir.IAdd(mul_result, src2); + + SetDst64(inst.dst[0], sum_result); + + const IR::U1 less_src0 = ir.ILessThan(sum_result, mul_result, false); + const IR::U1 less_src1 = ir.ILessThan(sum_result, src2, false); + const IR::U1 did_overflow = ir.LogicalOr(less_src0, less_src1); + ir.SetVcc(did_overflow); +} + void Translator::V_CMP_U32(ConditionOp op, bool is_signed, bool set_exec, const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; diff --git a/src/shader_recompiler/ir/ir_emitter.cpp b/src/shader_recompiler/ir/ir_emitter.cpp index cd4fdaa2..6ea3123d 100644 --- a/src/shader_recompiler/ir/ir_emitter.cpp +++ b/src/shader_recompiler/ir/ir_emitter.cpp @@ -964,8 +964,18 @@ IR::Value IREmitter::IMulExt(const U32& a, const U32& b, bool is_signed) { return Inst(is_signed ? Opcode::SMulExt : Opcode::UMulExt, a, b); } -U32 IREmitter::IMul(const U32& a, const U32& b) { - return Inst(Opcode::IMul32, a, b); +U32U64 IREmitter::IMul(const U32U64& a, const U32U64& b) { + if (a.Type() != b.Type()) { + UNREACHABLE_MSG("Mismatching types {} and {}", a.Type(), b.Type()); + } + switch (a.Type()) { + case Type::U32: + return Inst(Opcode::IMul32, a, b); + case Type::U64: + return Inst(Opcode::IMul64, a, b); + default: + ThrowInvalidType(a.Type()); + } } U32 IREmitter::IDiv(const U32& a, const U32& b, bool is_signed) { @@ -1024,8 +1034,18 @@ U32 IREmitter::BitwiseAnd(const U32& a, const U32& b) { return Inst(Opcode::BitwiseAnd32, a, b); } -U32 IREmitter::BitwiseOr(const U32& a, const U32& b) { - return Inst(Opcode::BitwiseOr32, a, b); +U32U64 IREmitter::BitwiseOr(const U32U64& a, const U32U64& b) { + if (a.Type() != b.Type()) { + UNREACHABLE_MSG("Mismatching types {} and {}", a.Type(), b.Type()); + } + switch (a.Type()) { + case Type::U32: + return Inst(Opcode::BitwiseOr32, a, b); + case Type::U64: + return Inst(Opcode::BitwiseOr64, a, b); + default: + ThrowInvalidType(a.Type()); + } } U32 IREmitter::BitwiseXor(const U32& a, const U32& b) { @@ -1095,8 +1115,18 @@ U32 IREmitter::UClamp(const U32& value, const U32& min, const U32& max) { return Inst(Opcode::UClamp32, value, min, max); } -U1 IREmitter::ILessThan(const U32& lhs, const U32& rhs, bool is_signed) { - return Inst(is_signed ? Opcode::SLessThan : Opcode::ULessThan, lhs, rhs); +U1 IREmitter::ILessThan(const U32U64& lhs, const U32U64& rhs, bool is_signed) { + if (lhs.Type() != rhs.Type()) { + UNREACHABLE_MSG("Mismatching types {} and {}", lhs.Type(), rhs.Type()); + } + switch (lhs.Type()) { + case Type::U32: + return Inst(is_signed ? Opcode::SLessThan32 : Opcode::ULessThan32, lhs, rhs); + case Type::U64: + return Inst(is_signed ? Opcode::SLessThan64 : Opcode::ULessThan64, lhs, rhs); + default: + ThrowInvalidType(lhs.Type()); + } } U1 IREmitter::IEqual(const U32U64& lhs, const U32U64& rhs) { @@ -1155,8 +1185,9 @@ U32U64 IREmitter::ConvertFToS(size_t bitsize, const F32F64& value) { ThrowInvalidType(value.Type()); } default: - UNREACHABLE_MSG("Invalid destination bitsize {}", bitsize); + break; } + throw NotImplementedException("Invalid destination bitsize {}", bitsize); } U32U64 IREmitter::ConvertFToU(size_t bitsize, const F32F64& value) { @@ -1183,13 +1214,17 @@ F32F64 IREmitter::ConvertSToF(size_t dest_bitsize, size_t src_bitsize, const Val switch (src_bitsize) { case 32: return Inst(Opcode::ConvertF32S32, value); + default: + break; } - break; case 64: switch (src_bitsize) { case 32: return Inst(Opcode::ConvertF64S32, value); + default: + break; } + default: break; } UNREACHABLE_MSG("Invalid bit size combination dst={} src={}", dest_bitsize, src_bitsize); @@ -1203,13 +1238,17 @@ F32F64 IREmitter::ConvertUToF(size_t dest_bitsize, size_t src_bitsize, const Val return Inst(Opcode::ConvertF32U16, value); case 32: return Inst(Opcode::ConvertF32U32, value); + default: + break; } - break; case 64: switch (src_bitsize) { case 32: return Inst(Opcode::ConvertF64U32, value); + default: + break; } + default: break; } UNREACHABLE_MSG("Invalid bit size combination dst={} src={}", dest_bitsize, src_bitsize); @@ -1227,7 +1266,11 @@ U16U32U64 IREmitter::UConvert(size_t result_bitsize, const U16U32U64& value) { switch (value.Type()) { case Type::U32: return Inst(Opcode::ConvertU16U32, value); + default: + break; } + default: + break; } throw NotImplementedException("Conversion from {} to {} bits", value.Type(), result_bitsize); } @@ -1238,13 +1281,17 @@ F16F32F64 IREmitter::FPConvert(size_t result_bitsize, const F16F32F64& value) { switch (value.Type()) { case Type::F32: return Inst(Opcode::ConvertF16F32, value); + default: + break; } - break; case 32: switch (value.Type()) { case Type::F16: return Inst(Opcode::ConvertF32F16, value); + default: + break; } + default: break; } throw NotImplementedException("Conversion from {} to {} bits", value.Type(), result_bitsize); diff --git a/src/shader_recompiler/ir/ir_emitter.h b/src/shader_recompiler/ir/ir_emitter.h index e7512430..7ee4e824 100644 --- a/src/shader_recompiler/ir/ir_emitter.h +++ b/src/shader_recompiler/ir/ir_emitter.h @@ -159,7 +159,7 @@ public: [[nodiscard]] Value IAddCary(const U32& a, const U32& b); [[nodiscard]] U32U64 ISub(const U32U64& a, const U32U64& b); [[nodiscard]] Value IMulExt(const U32& a, const U32& b, bool is_signed = false); - [[nodiscard]] U32 IMul(const U32& a, const U32& b); + [[nodiscard]] U32U64 IMul(const U32U64& a, const U32U64& b); [[nodiscard]] U32 IDiv(const U32& a, const U32& b, bool is_signed = false); [[nodiscard]] U32U64 INeg(const U32U64& value); [[nodiscard]] U32 IAbs(const U32& value); @@ -167,7 +167,7 @@ public: [[nodiscard]] U32U64 ShiftRightLogical(const U32U64& base, const U32& shift); [[nodiscard]] U32U64 ShiftRightArithmetic(const U32U64& base, const U32& shift); [[nodiscard]] U32 BitwiseAnd(const U32& a, const U32& b); - [[nodiscard]] U32 BitwiseOr(const U32& a, const U32& b); + [[nodiscard]] U32U64 BitwiseOr(const U32U64& a, const U32U64& b); [[nodiscard]] U32 BitwiseXor(const U32& a, const U32& b); [[nodiscard]] U32 BitFieldInsert(const U32& base, const U32& insert, const U32& offset, const U32& count); @@ -188,7 +188,7 @@ public: [[nodiscard]] U32 SClamp(const U32& value, const U32& min, const U32& max); [[nodiscard]] U32 UClamp(const U32& value, const U32& min, const U32& max); - [[nodiscard]] U1 ILessThan(const U32& lhs, const U32& rhs, bool is_signed); + [[nodiscard]] U1 ILessThan(const U32U64& lhs, const U32U64& rhs, bool is_signed); [[nodiscard]] U1 IEqual(const U32U64& lhs, const U32U64& rhs); [[nodiscard]] U1 ILessThanEqual(const U32& lhs, const U32& rhs, bool is_signed); [[nodiscard]] U1 IGreaterThan(const U32& lhs, const U32& rhs, bool is_signed); diff --git a/src/shader_recompiler/ir/opcodes.inc b/src/shader_recompiler/ir/opcodes.inc index 9aefc8b3..628b8d4f 100644 --- a/src/shader_recompiler/ir/opcodes.inc +++ b/src/shader_recompiler/ir/opcodes.inc @@ -227,6 +227,7 @@ OPCODE(IAddCary32, U32x2, U32, OPCODE(ISub32, U32, U32, U32, ) OPCODE(ISub64, U64, U64, U64, ) OPCODE(IMul32, U32, U32, U32, ) +OPCODE(IMul64, U64, U64, U64, ) OPCODE(SMulExt, U32x2, U32, U32, ) OPCODE(UMulExt, U32x2, U32, U32, ) OPCODE(SDiv32, U32, U32, U32, ) @@ -242,6 +243,7 @@ OPCODE(ShiftRightArithmetic32, U32, U32, OPCODE(ShiftRightArithmetic64, U64, U64, U32, ) OPCODE(BitwiseAnd32, U32, U32, U32, ) OPCODE(BitwiseOr32, U32, U32, U32, ) +OPCODE(BitwiseOr64, U64, U64, U64, ) OPCODE(BitwiseXor32, U32, U32, U32, ) OPCODE(BitFieldInsert, U32, U32, U32, U32, U32, ) OPCODE(BitFieldSExtract, U32, U32, U32, U32, ) @@ -258,8 +260,10 @@ OPCODE(SMax32, U32, U32, OPCODE(UMax32, U32, U32, U32, ) OPCODE(SClamp32, U32, U32, U32, U32, ) OPCODE(UClamp32, U32, U32, U32, U32, ) -OPCODE(SLessThan, U1, U32, U32, ) -OPCODE(ULessThan, U1, U32, U32, ) +OPCODE(SLessThan32, U1, U32, U32, ) +OPCODE(SLessThan64, U1, U64, U64, ) +OPCODE(ULessThan32, U1, U32, U32, ) +OPCODE(ULessThan64, U1, U64, U64, ) OPCODE(IEqual, U1, U32, U32, ) OPCODE(SLessThanEqual, U1, U32, U32, ) OPCODE(ULessThanEqual, U1, U32, U32, ) diff --git a/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp b/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp index 7cd896fb..13c0246e 100644 --- a/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp +++ b/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp @@ -21,6 +21,8 @@ template return value.F32(); } else if constexpr (std::is_same_v) { return value.U64(); + } else if constexpr (std::is_same_v) { + return static_cast(value.U64()); } } @@ -281,12 +283,18 @@ void ConstantPropagation(IR::Block& block, IR::Inst& inst) { return FoldLogicalOr(inst); case IR::Opcode::LogicalNot: return FoldLogicalNot(inst); - case IR::Opcode::SLessThan: + case IR::Opcode::SLessThan32: FoldWhenAllImmediates(inst, [](s32 a, s32 b) { return a < b; }); return; - case IR::Opcode::ULessThan: + case IR::Opcode::SLessThan64: + FoldWhenAllImmediates(inst, [](s64 a, s64 b) { return a < b; }); + return; + case IR::Opcode::ULessThan32: FoldWhenAllImmediates(inst, [](u32 a, u32 b) { return a < b; }); return; + case IR::Opcode::ULessThan64: + FoldWhenAllImmediates(inst, [](u64 a, u64 b) { return a < b; }); + return; case IR::Opcode::SLessThanEqual: FoldWhenAllImmediates(inst, [](s32 a, s32 b) { return a <= b; }); return; diff --git a/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp b/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp index 6a43ad6b..80591492 100644 --- a/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp +++ b/src/shader_recompiler/ir/passes/ssa_rewrite_pass.cpp @@ -348,13 +348,15 @@ void VisitInst(Pass& pass, IR::Block* block, IR::Inst& inst) { case IR::Opcode::GetThreadBitScalarReg: case IR::Opcode::GetScalarRegister: { const IR::ScalarReg reg{inst.Arg(0).ScalarReg()}; - inst.ReplaceUsesWith( - pass.ReadVariable(reg, block, opcode == IR::Opcode::GetThreadBitScalarReg)); + const bool thread_bit = opcode == IR::Opcode::GetThreadBitScalarReg; + const IR::Value value = pass.ReadVariable(reg, block, thread_bit); + inst.ReplaceUsesWith(value); break; } case IR::Opcode::GetVectorRegister: { const IR::VectorReg reg{inst.Arg(0).VectorReg()}; - inst.ReplaceUsesWith(pass.ReadVariable(reg, block)); + const IR::Value value = pass.ReadVariable(reg, block); + inst.ReplaceUsesWith(value); break; } case IR::Opcode::GetGotoVariable: diff --git a/src/shader_recompiler/ir/value.h b/src/shader_recompiler/ir/value.h index a43c17f5..db939eaa 100644 --- a/src/shader_recompiler/ir/value.h +++ b/src/shader_recompiler/ir/value.h @@ -220,6 +220,7 @@ using F16 = TypedValue; using F32 = TypedValue; using F64 = TypedValue; using U32F32 = TypedValue; +using U64F64 = TypedValue; using U32U64 = TypedValue; using U16U32U64 = TypedValue; using F32F64 = TypedValue; From 361412031cffe2a3725759d41406dca7ff519a72 Mon Sep 17 00:00:00 2001 From: Vinicius Rangel Date: Sat, 27 Jul 2024 14:16:21 -0300 Subject: [PATCH 16/44] fix tls patch on windows (#328) * fix tls patch on windows based on TlsGetValue in kernel32.dll * fix tls patch on windows for expansion slots --- src/core/cpu_patches.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/core/cpu_patches.cpp b/src/core/cpu_patches.cpp index 2a9cf5e2..42318822 100644 --- a/src/core/cpu_patches.cpp +++ b/src/core/cpu_patches.cpp @@ -285,20 +285,24 @@ static void GenerateTcbAccess(const ZydisDecodedOperand* operands, Xbyak::CodeGe const auto slot = GetTcbKey(); #if defined(_WIN32) - // The following logic is based on the wine implementation of TlsGetValue - // https://github.com/wine-mirror/wine/blob/a27b9551/dlls/kernelbase/thread.c#L719 + // The following logic is based on the Kernel32.dll asm of TlsGetValue static constexpr u32 TlsSlotsOffset = 0x1480; static constexpr u32 TlsExpansionSlotsOffset = 0x1780; static constexpr u32 TlsMinimumAvailable = 64; - const u32 teb_offset = slot < TlsMinimumAvailable ? TlsSlotsOffset : TlsExpansionSlotsOffset; - const u32 tls_index = slot < TlsMinimumAvailable ? slot : slot - TlsMinimumAvailable; - // Load the pointer to the table of TLS slots. c.putSeg(gs); - c.mov(dst, ptr[reinterpret_cast(teb_offset)]); - // Load the pointer to our buffer. - c.mov(dst, qword[dst + tls_index * sizeof(LPVOID)]); + if (slot < TlsMinimumAvailable) { + // Load the pointer to TLS slots. + c.mov(dst, ptr[reinterpret_cast(TlsSlotsOffset + slot * sizeof(LPVOID))]); + } else { + const u32 tls_index = slot - TlsMinimumAvailable; + + // Load the pointer to the table of TLS expansion slots. + c.mov(dst, ptr[reinterpret_cast(TlsExpansionSlotsOffset)]); + // Load the pointer to our buffer. + c.mov(dst, qword[dst + tls_index * sizeof(LPVOID)]); + } #elif defined(__APPLE__) // The following logic is based on the Darwin implementation of _os_tsd_get_direct, used by // pthread_getspecific https://github.com/apple/darwin-xnu/blob/main/libsyscall/os/tsd.h#L89-L96 From 0d6edaa0a0282571b07d5e518e72231a2d863927 Mon Sep 17 00:00:00 2001 From: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com> Date: Sun, 28 Jul 2024 16:54:09 +0300 Subject: [PATCH 17/44] Move presentation to separate thread/improve sync (#303) * video_out: Move presentation to separate thread * liverpool: Better sync for CPU flips * driver: Make flip blocking * videoout: Proper flip rate and vblank management * config: Add vblank divider option * clang format * videoout: added `sceVideoOutWaitVblank` * clang format * vk_scheduler: Silly merge conflict * externals: Add renderdoc API * clang format * reuse * rdoc: manual capture trigger * clang fmt --------- Co-authored-by: psucien <168137814+psucien@users.noreply.github.com> --- .reuse/dep5 | 4 + CMakeLists.txt | 5 +- externals/CMakeLists.txt | 7 + externals/renderdoc/renderdoc_app.h | 741 ++++++++++++++++++ src/common/config.cpp | 18 +- src/common/config.h | 2 + src/common/path_util.cpp | 1 + src/common/path_util.h | 2 + src/core/libraries/gnmdriver/gnmdriver.cpp | 4 +- src/core/libraries/kernel/event_queue.cpp | 4 +- src/core/libraries/libs.cpp | 2 +- src/core/libraries/videoout/driver.cpp | 103 ++- src/core/libraries/videoout/driver.h | 38 +- src/core/libraries/videoout/video_out.cpp | 22 +- src/core/libraries/videoout/video_out.h | 6 +- src/emulator.cpp | 27 +- src/sdl_window.cpp | 8 +- src/video_core/amdgpu/liverpool.cpp | 35 +- src/video_core/amdgpu/liverpool.h | 22 + src/video_core/amdgpu/pm4_cmds.h | 14 +- src/video_core/renderdoc.cpp | 120 +++ src/video_core/renderdoc.h | 25 + .../renderer_vulkan/renderer_vulkan.cpp | 98 +-- .../renderer_vulkan/renderer_vulkan.h | 27 +- .../renderer_vulkan/vk_master_semaphore.cpp | 44 -- .../renderer_vulkan/vk_master_semaphore.h | 4 - .../renderer_vulkan/vk_rasterizer.cpp | 7 + .../renderer_vulkan/vk_rasterizer.h | 2 + .../renderer_vulkan/vk_scheduler.cpp | 54 +- src/video_core/renderer_vulkan/vk_scheduler.h | 33 +- .../renderer_vulkan/vk_swapchain.cpp | 2 +- src/video_core/texture_cache/tile_manager.cpp | 2 +- 32 files changed, 1259 insertions(+), 224 deletions(-) create mode 100644 externals/renderdoc/renderdoc_app.h create mode 100644 src/video_core/renderdoc.cpp create mode 100644 src/video_core/renderdoc.h diff --git a/.reuse/dep5 b/.reuse/dep5 index 1dad5014..c467a164 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -42,3 +42,7 @@ Files: CMakeSettings.json src/shadps4.rc Copyright: shadPS4 Emulator Project License: GPL-2.0-or-later + +Files: externals/renderdoc/* +Copyright: 2019-2024 Baldur Karlsson +License: MIT diff --git a/CMakeLists.txt b/CMakeLists.txt index 880d1cf5..08cc4103 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,6 +79,7 @@ find_package(xbyak 7.07 CONFIG) find_package(xxHash 0.8.2 MODULE) find_package(zlib-ng 2.2.0 MODULE) find_package(Zydis 4.1.0 CONFIG) +find_package(RenderDoc MODULE) if (APPLE) find_package(date 3.0.1 CONFIG) @@ -484,6 +485,8 @@ set(VIDEO_CORE src/video_core/amdgpu/liverpool.cpp src/video_core/texture_cache/tile_manager.cpp src/video_core/texture_cache/tile_manager.h src/video_core/texture_cache/types.h + src/video_core/renderdoc.cpp + src/video_core/renderdoc.h ) set(INPUT src/input/controller.cpp @@ -559,7 +562,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) +target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API) target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::SPIRV glslang::glslang SDL3::SDL3) if (APPLE) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 7fca7b54..9ebdd878 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -74,6 +74,13 @@ if (NOT TARGET GPUOpen::VulkanMemoryAllocator) add_subdirectory(vma) endif() +# RenderDoc +if (NOT TARGET RenderDoc::API) + add_library(renderdoc INTERFACE) + target_include_directories(renderdoc SYSTEM INTERFACE ./renderdoc) + add_library(RenderDoc::API ALIAS renderdoc) +endif() + # glslang if (NOT TARGET glslang::glslang) set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "") diff --git a/externals/renderdoc/renderdoc_app.h b/externals/renderdoc/renderdoc_app.h new file mode 100644 index 00000000..c01e0593 --- /dev/null +++ b/externals/renderdoc/renderdoc_app.h @@ -0,0 +1,741 @@ +/****************************************************************************** + * The MIT License (MIT) + * + * Copyright (c) 2019-2024 Baldur Karlsson + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + ******************************************************************************/ + +#pragma once + +////////////////////////////////////////////////////////////////////////////////////////////////// +// +// Documentation for the API is available at https://renderdoc.org/docs/in_application_api.html +// + +#if !defined(RENDERDOC_NO_STDINT) +#include +#endif + +#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) +#define RENDERDOC_CC __cdecl +#elif defined(__linux__) || defined(__FreeBSD__) +#define RENDERDOC_CC +#elif defined(__APPLE__) +#define RENDERDOC_CC +#else +#error "Unknown platform" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +////////////////////////////////////////////////////////////////////////////////////////////////// +// Constants not used directly in below API + +// This is a GUID/magic value used for when applications pass a path where shader debug +// information can be found to match up with a stripped shader. +// the define can be used like so: const GUID RENDERDOC_ShaderDebugMagicValue = +// RENDERDOC_ShaderDebugMagicValue_value +#define RENDERDOC_ShaderDebugMagicValue_struct \ + { \ + 0xeab25520, 0x6670, 0x4865, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff \ + } + +// as an alternative when you want a byte array (assuming x86 endianness): +#define RENDERDOC_ShaderDebugMagicValue_bytearray \ + { \ + 0x20, 0x55, 0xb2, 0xea, 0x70, 0x66, 0x65, 0x48, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff \ + } + +// truncated version when only a uint64_t is available (e.g. Vulkan tags): +#define RENDERDOC_ShaderDebugMagicValue_truncated 0x48656670eab25520ULL + +////////////////////////////////////////////////////////////////////////////////////////////////// +// RenderDoc capture options +// + +typedef enum RENDERDOC_CaptureOption +{ + // Allow the application to enable vsync + // + // Default - enabled + // + // 1 - The application can enable or disable vsync at will + // 0 - vsync is force disabled + eRENDERDOC_Option_AllowVSync = 0, + + // Allow the application to enable fullscreen + // + // Default - enabled + // + // 1 - The application can enable or disable fullscreen at will + // 0 - fullscreen is force disabled + eRENDERDOC_Option_AllowFullscreen = 1, + + // Record API debugging events and messages + // + // Default - disabled + // + // 1 - Enable built-in API debugging features and records the results into + // the capture, which is matched up with events on replay + // 0 - no API debugging is forcibly enabled + eRENDERDOC_Option_APIValidation = 2, + eRENDERDOC_Option_DebugDeviceMode = 2, // deprecated name of this enum + + // Capture CPU callstacks for API events + // + // Default - disabled + // + // 1 - Enables capturing of callstacks + // 0 - no callstacks are captured + eRENDERDOC_Option_CaptureCallstacks = 3, + + // When capturing CPU callstacks, only capture them from actions. + // This option does nothing without the above option being enabled + // + // Default - disabled + // + // 1 - Only captures callstacks for actions. + // Ignored if CaptureCallstacks is disabled + // 0 - Callstacks, if enabled, are captured for every event. + eRENDERDOC_Option_CaptureCallstacksOnlyDraws = 4, + eRENDERDOC_Option_CaptureCallstacksOnlyActions = 4, + + // Specify a delay in seconds to wait for a debugger to attach, after + // creating or injecting into a process, before continuing to allow it to run. + // + // 0 indicates no delay, and the process will run immediately after injection + // + // Default - 0 seconds + // + eRENDERDOC_Option_DelayForDebugger = 5, + + // Verify buffer access. This includes checking the memory returned by a Map() call to + // detect any out-of-bounds modification, as well as initialising buffers with undefined contents + // to a marker value to catch use of uninitialised memory. + // + // NOTE: This option is only valid for OpenGL and D3D11. Explicit APIs such as D3D12 and Vulkan do + // not do the same kind of interception & checking and undefined contents are really undefined. + // + // Default - disabled + // + // 1 - Verify buffer access + // 0 - No verification is performed, and overwriting bounds may cause crashes or corruption in + // RenderDoc. + eRENDERDOC_Option_VerifyBufferAccess = 6, + + // The old name for eRENDERDOC_Option_VerifyBufferAccess was eRENDERDOC_Option_VerifyMapWrites. + // This option now controls the filling of uninitialised buffers with 0xdddddddd which was + // previously always enabled + eRENDERDOC_Option_VerifyMapWrites = eRENDERDOC_Option_VerifyBufferAccess, + + // Hooks any system API calls that create child processes, and injects + // RenderDoc into them recursively with the same options. + // + // Default - disabled + // + // 1 - Hooks into spawned child processes + // 0 - Child processes are not hooked by RenderDoc + eRENDERDOC_Option_HookIntoChildren = 7, + + // By default RenderDoc only includes resources in the final capture necessary + // for that frame, this allows you to override that behaviour. + // + // Default - disabled + // + // 1 - all live resources at the time of capture are included in the capture + // and available for inspection + // 0 - only the resources referenced by the captured frame are included + eRENDERDOC_Option_RefAllResources = 8, + + // **NOTE**: As of RenderDoc v1.1 this option has been deprecated. Setting or + // getting it will be ignored, to allow compatibility with older versions. + // In v1.1 the option acts as if it's always enabled. + // + // By default RenderDoc skips saving initial states for resources where the + // previous contents don't appear to be used, assuming that writes before + // reads indicate previous contents aren't used. + // + // Default - disabled + // + // 1 - initial contents at the start of each captured frame are saved, even if + // they are later overwritten or cleared before being used. + // 0 - unless a read is detected, initial contents will not be saved and will + // appear as black or empty data. + eRENDERDOC_Option_SaveAllInitials = 9, + + // In APIs that allow for the recording of command lists to be replayed later, + // RenderDoc may choose to not capture command lists before a frame capture is + // triggered, to reduce overheads. This means any command lists recorded once + // and replayed many times will not be available and may cause a failure to + // capture. + // + // NOTE: This is only true for APIs where multithreading is difficult or + // discouraged. Newer APIs like Vulkan and D3D12 will ignore this option + // and always capture all command lists since the API is heavily oriented + // around it and the overheads have been reduced by API design. + // + // 1 - All command lists are captured from the start of the application + // 0 - Command lists are only captured if their recording begins during + // the period when a frame capture is in progress. + eRENDERDOC_Option_CaptureAllCmdLists = 10, + + // Mute API debugging output when the API validation mode option is enabled + // + // Default - enabled + // + // 1 - Mute any API debug messages from being displayed or passed through + // 0 - API debugging is displayed as normal + eRENDERDOC_Option_DebugOutputMute = 11, + + // Option to allow vendor extensions to be used even when they may be + // incompatible with RenderDoc and cause corrupted replays or crashes. + // + // Default - inactive + // + // No values are documented, this option should only be used when absolutely + // necessary as directed by a RenderDoc developer. + eRENDERDOC_Option_AllowUnsupportedVendorExtensions = 12, + + // Define a soft memory limit which some APIs may aim to keep overhead under where + // possible. Anything above this limit will where possible be saved directly to disk during + // capture. + // This will cause increased disk space use (which may cause a capture to fail if disk space is + // exhausted) as well as slower capture times. + // + // Not all memory allocations may be deferred like this so it is not a guarantee of a memory + // limit. + // + // Units are in MBs, suggested values would range from 200MB to 1000MB. + // + // Default - 0 Megabytes + eRENDERDOC_Option_SoftMemoryLimit = 13, +} RENDERDOC_CaptureOption; + +// Sets an option that controls how RenderDoc behaves on capture. +// +// Returns 1 if the option and value are valid +// Returns 0 if either is invalid and the option is unchanged +typedef int(RENDERDOC_CC *pRENDERDOC_SetCaptureOptionU32)(RENDERDOC_CaptureOption opt, uint32_t val); +typedef int(RENDERDOC_CC *pRENDERDOC_SetCaptureOptionF32)(RENDERDOC_CaptureOption opt, float val); + +// Gets the current value of an option as a uint32_t +// +// If the option is invalid, 0xffffffff is returned +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetCaptureOptionU32)(RENDERDOC_CaptureOption opt); + +// Gets the current value of an option as a float +// +// If the option is invalid, -FLT_MAX is returned +typedef float(RENDERDOC_CC *pRENDERDOC_GetCaptureOptionF32)(RENDERDOC_CaptureOption opt); + +typedef enum RENDERDOC_InputButton +{ + // '0' - '9' matches ASCII values + eRENDERDOC_Key_0 = 0x30, + eRENDERDOC_Key_1 = 0x31, + eRENDERDOC_Key_2 = 0x32, + eRENDERDOC_Key_3 = 0x33, + eRENDERDOC_Key_4 = 0x34, + eRENDERDOC_Key_5 = 0x35, + eRENDERDOC_Key_6 = 0x36, + eRENDERDOC_Key_7 = 0x37, + eRENDERDOC_Key_8 = 0x38, + eRENDERDOC_Key_9 = 0x39, + + // 'A' - 'Z' matches ASCII values + eRENDERDOC_Key_A = 0x41, + eRENDERDOC_Key_B = 0x42, + eRENDERDOC_Key_C = 0x43, + eRENDERDOC_Key_D = 0x44, + eRENDERDOC_Key_E = 0x45, + eRENDERDOC_Key_F = 0x46, + eRENDERDOC_Key_G = 0x47, + eRENDERDOC_Key_H = 0x48, + eRENDERDOC_Key_I = 0x49, + eRENDERDOC_Key_J = 0x4A, + eRENDERDOC_Key_K = 0x4B, + eRENDERDOC_Key_L = 0x4C, + eRENDERDOC_Key_M = 0x4D, + eRENDERDOC_Key_N = 0x4E, + eRENDERDOC_Key_O = 0x4F, + eRENDERDOC_Key_P = 0x50, + eRENDERDOC_Key_Q = 0x51, + eRENDERDOC_Key_R = 0x52, + eRENDERDOC_Key_S = 0x53, + eRENDERDOC_Key_T = 0x54, + eRENDERDOC_Key_U = 0x55, + eRENDERDOC_Key_V = 0x56, + eRENDERDOC_Key_W = 0x57, + eRENDERDOC_Key_X = 0x58, + eRENDERDOC_Key_Y = 0x59, + eRENDERDOC_Key_Z = 0x5A, + + // leave the rest of the ASCII range free + // in case we want to use it later + eRENDERDOC_Key_NonPrintable = 0x100, + + eRENDERDOC_Key_Divide, + eRENDERDOC_Key_Multiply, + eRENDERDOC_Key_Subtract, + eRENDERDOC_Key_Plus, + + eRENDERDOC_Key_F1, + eRENDERDOC_Key_F2, + eRENDERDOC_Key_F3, + eRENDERDOC_Key_F4, + eRENDERDOC_Key_F5, + eRENDERDOC_Key_F6, + eRENDERDOC_Key_F7, + eRENDERDOC_Key_F8, + eRENDERDOC_Key_F9, + eRENDERDOC_Key_F10, + eRENDERDOC_Key_F11, + eRENDERDOC_Key_F12, + + eRENDERDOC_Key_Home, + eRENDERDOC_Key_End, + eRENDERDOC_Key_Insert, + eRENDERDOC_Key_Delete, + eRENDERDOC_Key_PageUp, + eRENDERDOC_Key_PageDn, + + eRENDERDOC_Key_Backspace, + eRENDERDOC_Key_Tab, + eRENDERDOC_Key_PrtScrn, + eRENDERDOC_Key_Pause, + + eRENDERDOC_Key_Max, +} RENDERDOC_InputButton; + +// Sets which key or keys can be used to toggle focus between multiple windows +// +// If keys is NULL or num is 0, toggle keys will be disabled +typedef void(RENDERDOC_CC *pRENDERDOC_SetFocusToggleKeys)(RENDERDOC_InputButton *keys, int num); + +// Sets which key or keys can be used to capture the next frame +// +// If keys is NULL or num is 0, captures keys will be disabled +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureKeys)(RENDERDOC_InputButton *keys, int num); + +typedef enum RENDERDOC_OverlayBits +{ + // This single bit controls whether the overlay is enabled or disabled globally + eRENDERDOC_Overlay_Enabled = 0x1, + + // Show the average framerate over several seconds as well as min/max + eRENDERDOC_Overlay_FrameRate = 0x2, + + // Show the current frame number + eRENDERDOC_Overlay_FrameNumber = 0x4, + + // Show a list of recent captures, and how many captures have been made + eRENDERDOC_Overlay_CaptureList = 0x8, + + // Default values for the overlay mask + eRENDERDOC_Overlay_Default = (eRENDERDOC_Overlay_Enabled | eRENDERDOC_Overlay_FrameRate | + eRENDERDOC_Overlay_FrameNumber | eRENDERDOC_Overlay_CaptureList), + + // Enable all bits + eRENDERDOC_Overlay_All = ~0U, + + // Disable all bits + eRENDERDOC_Overlay_None = 0, +} RENDERDOC_OverlayBits; + +// returns the overlay bits that have been set +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetOverlayBits)(); +// sets the overlay bits with an and & or mask +typedef void(RENDERDOC_CC *pRENDERDOC_MaskOverlayBits)(uint32_t And, uint32_t Or); + +// this function will attempt to remove RenderDoc's hooks in the application. +// +// Note: that this can only work correctly if done immediately after +// the module is loaded, before any API work happens. RenderDoc will remove its +// injected hooks and shut down. Behaviour is undefined if this is called +// after any API functions have been called, and there is still no guarantee of +// success. +typedef void(RENDERDOC_CC *pRENDERDOC_RemoveHooks)(); + +// DEPRECATED: compatibility for code compiled against pre-1.4.1 headers. +typedef pRENDERDOC_RemoveHooks pRENDERDOC_Shutdown; + +// This function will unload RenderDoc's crash handler. +// +// If you use your own crash handler and don't want RenderDoc's handler to +// intercede, you can call this function to unload it and any unhandled +// exceptions will pass to the next handler. +typedef void(RENDERDOC_CC *pRENDERDOC_UnloadCrashHandler)(); + +// Sets the capture file path template +// +// pathtemplate is a UTF-8 string that gives a template for how captures will be named +// and where they will be saved. +// +// Any extension is stripped off the path, and captures are saved in the directory +// specified, and named with the filename and the frame number appended. If the +// directory does not exist it will be created, including any parent directories. +// +// If pathtemplate is NULL, the template will remain unchanged +// +// Example: +// +// SetCaptureFilePathTemplate("my_captures/example"); +// +// Capture #1 -> my_captures/example_frame123.rdc +// Capture #2 -> my_captures/example_frame456.rdc +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureFilePathTemplate)(const char *pathtemplate); + +// returns the current capture path template, see SetCaptureFileTemplate above, as a UTF-8 string +typedef const char *(RENDERDOC_CC *pRENDERDOC_GetCaptureFilePathTemplate)(); + +// DEPRECATED: compatibility for code compiled against pre-1.1.2 headers. +typedef pRENDERDOC_SetCaptureFilePathTemplate pRENDERDOC_SetLogFilePathTemplate; +typedef pRENDERDOC_GetCaptureFilePathTemplate pRENDERDOC_GetLogFilePathTemplate; + +// returns the number of captures that have been made +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetNumCaptures)(); + +// This function returns the details of a capture, by index. New captures are added +// to the end of the list. +// +// filename will be filled with the absolute path to the capture file, as a UTF-8 string +// pathlength will be written with the length in bytes of the filename string +// timestamp will be written with the time of the capture, in seconds since the Unix epoch +// +// Any of the parameters can be NULL and they'll be skipped. +// +// The function will return 1 if the capture index is valid, or 0 if the index is invalid +// If the index is invalid, the values will be unchanged +// +// Note: when captures are deleted in the UI they will remain in this list, so the +// capture path may not exist anymore. +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetCapture)(uint32_t idx, char *filename, + uint32_t *pathlength, uint64_t *timestamp); + +// Sets the comments associated with a capture file. These comments are displayed in the +// UI program when opening. +// +// filePath should be a path to the capture file to add comments to. If set to NULL or "" +// the most recent capture file created made will be used instead. +// comments should be a NULL-terminated UTF-8 string to add as comments. +// +// Any existing comments will be overwritten. +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureFileComments)(const char *filePath, + const char *comments); + +// returns 1 if the RenderDoc UI is connected to this application, 0 otherwise +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_IsTargetControlConnected)(); + +// DEPRECATED: compatibility for code compiled against pre-1.1.1 headers. +// This was renamed to IsTargetControlConnected in API 1.1.1, the old typedef is kept here for +// backwards compatibility with old code, it is castable either way since it's ABI compatible +// as the same function pointer type. +typedef pRENDERDOC_IsTargetControlConnected pRENDERDOC_IsRemoteAccessConnected; + +// This function will launch the Replay UI associated with the RenderDoc library injected +// into the running application. +// +// if connectTargetControl is 1, the Replay UI will be launched with a command line parameter +// to connect to this application +// cmdline is the rest of the command line, as a UTF-8 string. E.g. a captures to open +// if cmdline is NULL, the command line will be empty. +// +// returns the PID of the replay UI if successful, 0 if not successful. +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_LaunchReplayUI)(uint32_t connectTargetControl, + const char *cmdline); + +// RenderDoc can return a higher version than requested if it's backwards compatible, +// this function returns the actual version returned. If a parameter is NULL, it will be +// ignored and the others will be filled out. +typedef void(RENDERDOC_CC *pRENDERDOC_GetAPIVersion)(int *major, int *minor, int *patch); + +// Requests that the replay UI show itself (if hidden or not the current top window). This can be +// used in conjunction with IsTargetControlConnected and LaunchReplayUI to intelligently handle +// showing the UI after making a capture. +// +// This will return 1 if the request was successfully passed on, though it's not guaranteed that +// the UI will be on top in all cases depending on OS rules. It will return 0 if there is no current +// target control connection to make such a request, or if there was another error +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_ShowReplayUI)(); + +////////////////////////////////////////////////////////////////////////// +// Capturing functions +// + +// A device pointer is a pointer to the API's root handle. +// +// This would be an ID3D11Device, HGLRC/GLXContext, ID3D12Device, etc +typedef void *RENDERDOC_DevicePointer; + +// A window handle is the OS's native window handle +// +// This would be an HWND, GLXDrawable, etc +typedef void *RENDERDOC_WindowHandle; + +// A helper macro for Vulkan, where the device handle cannot be used directly. +// +// Passing the VkInstance to this macro will return the RENDERDOC_DevicePointer to use. +// +// Specifically, the value needed is the dispatch table pointer, which sits as the first +// pointer-sized object in the memory pointed to by the VkInstance. Thus we cast to a void** and +// indirect once. +#define RENDERDOC_DEVICEPOINTER_FROM_VKINSTANCE(inst) (*((void **)(inst))) + +// This sets the RenderDoc in-app overlay in the API/window pair as 'active' and it will +// respond to keypresses. Neither parameter can be NULL +typedef void(RENDERDOC_CC *pRENDERDOC_SetActiveWindow)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// capture the next frame on whichever window and API is currently considered active +typedef void(RENDERDOC_CC *pRENDERDOC_TriggerCapture)(); + +// capture the next N frames on whichever window and API is currently considered active +typedef void(RENDERDOC_CC *pRENDERDOC_TriggerMultiFrameCapture)(uint32_t numFrames); + +// When choosing either a device pointer or a window handle to capture, you can pass NULL. +// Passing NULL specifies a 'wildcard' match against anything. This allows you to specify +// any API rendering to a specific window, or a specific API instance rendering to any window, +// or in the simplest case of one window and one API, you can just pass NULL for both. +// +// In either case, if there are two or more possible matching (device,window) pairs it +// is undefined which one will be captured. +// +// Note: for headless rendering you can pass NULL for the window handle and either specify +// a device pointer or leave it NULL as above. + +// Immediately starts capturing API calls on the specified device pointer and window handle. +// +// If there is no matching thing to capture (e.g. no supported API has been initialised), +// this will do nothing. +// +// The results are undefined (including crashes) if two captures are started overlapping, +// even on separate devices and/oror windows. +typedef void(RENDERDOC_CC *pRENDERDOC_StartFrameCapture)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// Returns whether or not a frame capture is currently ongoing anywhere. +// +// This will return 1 if a capture is ongoing, and 0 if there is no capture running +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_IsFrameCapturing)(); + +// Ends capturing immediately. +// +// This will return 1 if the capture succeeded, and 0 if there was an error capturing. +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_EndFrameCapture)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// Ends capturing immediately and discard any data stored without saving to disk. +// +// This will return 1 if the capture was discarded, and 0 if there was an error or no capture +// was in progress +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_DiscardFrameCapture)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// Only valid to be called between a call to StartFrameCapture and EndFrameCapture. Gives a custom +// title to the capture produced which will be displayed in the UI. +// +// If multiple captures are ongoing, this title will be applied to the first capture to end after +// this call. The second capture to end will have no title, unless this function is called again. +// +// Calling this function has no effect if no capture is currently running, and if it is called +// multiple times only the last title will be used. +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureTitle)(const char *title); + +////////////////////////////////////////////////////////////////////////////////////////////////// +// RenderDoc API versions +// + +// RenderDoc uses semantic versioning (http://semver.org/). +// +// MAJOR version is incremented when incompatible API changes happen. +// MINOR version is incremented when functionality is added in a backwards-compatible manner. +// PATCH version is incremented when backwards-compatible bug fixes happen. +// +// Note that this means the API returned can be higher than the one you might have requested. +// e.g. if you are running against a newer RenderDoc that supports 1.0.1, it will be returned +// instead of 1.0.0. You can check this with the GetAPIVersion entry point +typedef enum RENDERDOC_Version +{ + eRENDERDOC_API_Version_1_0_0 = 10000, // RENDERDOC_API_1_0_0 = 1 00 00 + eRENDERDOC_API_Version_1_0_1 = 10001, // RENDERDOC_API_1_0_1 = 1 00 01 + eRENDERDOC_API_Version_1_0_2 = 10002, // RENDERDOC_API_1_0_2 = 1 00 02 + eRENDERDOC_API_Version_1_1_0 = 10100, // RENDERDOC_API_1_1_0 = 1 01 00 + eRENDERDOC_API_Version_1_1_1 = 10101, // RENDERDOC_API_1_1_1 = 1 01 01 + eRENDERDOC_API_Version_1_1_2 = 10102, // RENDERDOC_API_1_1_2 = 1 01 02 + eRENDERDOC_API_Version_1_2_0 = 10200, // RENDERDOC_API_1_2_0 = 1 02 00 + eRENDERDOC_API_Version_1_3_0 = 10300, // RENDERDOC_API_1_3_0 = 1 03 00 + eRENDERDOC_API_Version_1_4_0 = 10400, // RENDERDOC_API_1_4_0 = 1 04 00 + eRENDERDOC_API_Version_1_4_1 = 10401, // RENDERDOC_API_1_4_1 = 1 04 01 + eRENDERDOC_API_Version_1_4_2 = 10402, // RENDERDOC_API_1_4_2 = 1 04 02 + eRENDERDOC_API_Version_1_5_0 = 10500, // RENDERDOC_API_1_5_0 = 1 05 00 + eRENDERDOC_API_Version_1_6_0 = 10600, // RENDERDOC_API_1_6_0 = 1 06 00 +} RENDERDOC_Version; + +// API version changelog: +// +// 1.0.0 - initial release +// 1.0.1 - Bugfix: IsFrameCapturing() was returning false for captures that were triggered +// by keypress or TriggerCapture, instead of Start/EndFrameCapture. +// 1.0.2 - Refactor: Renamed eRENDERDOC_Option_DebugDeviceMode to eRENDERDOC_Option_APIValidation +// 1.1.0 - Add feature: TriggerMultiFrameCapture(). Backwards compatible with 1.0.x since the new +// function pointer is added to the end of the struct, the original layout is identical +// 1.1.1 - Refactor: Renamed remote access to target control (to better disambiguate from remote +// replay/remote server concept in replay UI) +// 1.1.2 - Refactor: Renamed "log file" in function names to just capture, to clarify that these +// are captures and not debug logging files. This is the first API version in the v1.0 +// branch. +// 1.2.0 - Added feature: SetCaptureFileComments() to add comments to a capture file that will be +// displayed in the UI program on load. +// 1.3.0 - Added feature: New capture option eRENDERDOC_Option_AllowUnsupportedVendorExtensions +// which allows users to opt-in to allowing unsupported vendor extensions to function. +// Should be used at the user's own risk. +// Refactor: Renamed eRENDERDOC_Option_VerifyMapWrites to +// eRENDERDOC_Option_VerifyBufferAccess, which now also controls initialisation to +// 0xdddddddd of uninitialised buffer contents. +// 1.4.0 - Added feature: DiscardFrameCapture() to discard a frame capture in progress and stop +// capturing without saving anything to disk. +// 1.4.1 - Refactor: Renamed Shutdown to RemoveHooks to better clarify what is happening +// 1.4.2 - Refactor: Renamed 'draws' to 'actions' in callstack capture option. +// 1.5.0 - Added feature: ShowReplayUI() to request that the replay UI show itself if connected +// 1.6.0 - Added feature: SetCaptureTitle() which can be used to set a title for a +// capture made with StartFrameCapture() or EndFrameCapture() + +typedef struct RENDERDOC_API_1_6_0 +{ + pRENDERDOC_GetAPIVersion GetAPIVersion; + + pRENDERDOC_SetCaptureOptionU32 SetCaptureOptionU32; + pRENDERDOC_SetCaptureOptionF32 SetCaptureOptionF32; + + pRENDERDOC_GetCaptureOptionU32 GetCaptureOptionU32; + pRENDERDOC_GetCaptureOptionF32 GetCaptureOptionF32; + + pRENDERDOC_SetFocusToggleKeys SetFocusToggleKeys; + pRENDERDOC_SetCaptureKeys SetCaptureKeys; + + pRENDERDOC_GetOverlayBits GetOverlayBits; + pRENDERDOC_MaskOverlayBits MaskOverlayBits; + + // Shutdown was renamed to RemoveHooks in 1.4.1. + // These unions allow old code to continue compiling without changes + union + { + pRENDERDOC_Shutdown Shutdown; + pRENDERDOC_RemoveHooks RemoveHooks; + }; + pRENDERDOC_UnloadCrashHandler UnloadCrashHandler; + + // Get/SetLogFilePathTemplate was renamed to Get/SetCaptureFilePathTemplate in 1.1.2. + // These unions allow old code to continue compiling without changes + union + { + // deprecated name + pRENDERDOC_SetLogFilePathTemplate SetLogFilePathTemplate; + // current name + pRENDERDOC_SetCaptureFilePathTemplate SetCaptureFilePathTemplate; + }; + union + { + // deprecated name + pRENDERDOC_GetLogFilePathTemplate GetLogFilePathTemplate; + // current name + pRENDERDOC_GetCaptureFilePathTemplate GetCaptureFilePathTemplate; + }; + + pRENDERDOC_GetNumCaptures GetNumCaptures; + pRENDERDOC_GetCapture GetCapture; + + pRENDERDOC_TriggerCapture TriggerCapture; + + // IsRemoteAccessConnected was renamed to IsTargetControlConnected in 1.1.1. + // This union allows old code to continue compiling without changes + union + { + // deprecated name + pRENDERDOC_IsRemoteAccessConnected IsRemoteAccessConnected; + // current name + pRENDERDOC_IsTargetControlConnected IsTargetControlConnected; + }; + pRENDERDOC_LaunchReplayUI LaunchReplayUI; + + pRENDERDOC_SetActiveWindow SetActiveWindow; + + pRENDERDOC_StartFrameCapture StartFrameCapture; + pRENDERDOC_IsFrameCapturing IsFrameCapturing; + pRENDERDOC_EndFrameCapture EndFrameCapture; + + // new function in 1.1.0 + pRENDERDOC_TriggerMultiFrameCapture TriggerMultiFrameCapture; + + // new function in 1.2.0 + pRENDERDOC_SetCaptureFileComments SetCaptureFileComments; + + // new function in 1.4.0 + pRENDERDOC_DiscardFrameCapture DiscardFrameCapture; + + // new function in 1.5.0 + pRENDERDOC_ShowReplayUI ShowReplayUI; + + // new function in 1.6.0 + pRENDERDOC_SetCaptureTitle SetCaptureTitle; +} RENDERDOC_API_1_6_0; + +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_1; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_2; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_1; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_2; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_2_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_3_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_1; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_2; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_5_0; + +////////////////////////////////////////////////////////////////////////////////////////////////// +// RenderDoc API entry point +// +// This entry point can be obtained via GetProcAddress/dlsym if RenderDoc is available. +// +// The name is the same as the typedef - "RENDERDOC_GetAPI" +// +// This function is not thread safe, and should not be called on multiple threads at once. +// Ideally, call this once as early as possible in your application's startup, before doing +// any API work, since some configuration functionality etc has to be done also before +// initialising any APIs. +// +// Parameters: +// version is a single value from the RENDERDOC_Version above. +// +// outAPIPointers will be filled out with a pointer to the corresponding struct of function +// pointers. +// +// Returns: +// 1 - if the outAPIPointers has been filled with a pointer to the API struct requested +// 0 - if the requested version is not supported or the arguments are invalid. +// +typedef int(RENDERDOC_CC *pRENDERDOC_GetAPI)(RENDERDOC_Version version, void **outAPIPointers); + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/src/common/config.cpp b/src/common/config.cpp index 218575ff..57f40b21 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -22,8 +22,10 @@ static bool isShowSplash = false; static bool isNullGpu = false; static bool shouldDumpShaders = false; static bool shouldDumpPM4 = false; +static u32 vblankDivider = 1; static bool vkValidation = false; static bool vkValidationSync = false; +static bool rdocEnable = false; // Gui std::string settings_install_dir = ""; u32 main_window_geometry_x = 400; @@ -94,6 +96,14 @@ bool dumpPM4() { return shouldDumpPM4; } +bool isRdocEnabled() { + return rdocEnable; +} + +u32 vblankDiv() { + return vblankDivider; +} + bool vkValidationEnabled() { return vkValidation; } @@ -233,10 +243,10 @@ void load(const std::filesystem::path& path) { screenWidth = toml::find_or(gpu, "screenWidth", screenWidth); screenHeight = toml::find_or(gpu, "screenHeight", screenHeight); - gpuId = toml::find_or(gpu, "gpuId", 0); isNullGpu = toml::find_or(gpu, "nullGpu", false); shouldDumpShaders = toml::find_or(gpu, "dumpShaders", false); shouldDumpPM4 = toml::find_or(gpu, "dumpPM4", false); + vblankDivider = toml::find_or(gpu, "vblankDivider", 1); } } if (data.contains("Vulkan")) { @@ -244,8 +254,10 @@ void load(const std::filesystem::path& path) { if (vkResult.is_ok()) { auto vk = vkResult.unwrap(); + gpuId = toml::find_or(vk, "gpuId", 0); vkValidation = toml::find_or(vk, "validation", true); vkValidationSync = toml::find_or(vk, "validation_sync", true); + rdocEnable = toml::find_or(vk, "rdocEnable", false); } } if (data.contains("Debug")) { @@ -312,14 +324,16 @@ void save(const std::filesystem::path& path) { data["General"]["logFilter"] = logFilter; data["General"]["logType"] = logType; data["General"]["showSplash"] = isShowSplash; - data["GPU"]["gpuId"] = gpuId; data["GPU"]["screenWidth"] = screenWidth; data["GPU"]["screenHeight"] = screenHeight; data["GPU"]["nullGpu"] = isNullGpu; data["GPU"]["dumpShaders"] = shouldDumpShaders; data["GPU"]["dumpPM4"] = shouldDumpPM4; + data["GPU"]["vblankDivider"] = vblankDivider; + data["Vulkan"]["gpuId"] = gpuId; data["Vulkan"]["validation"] = vkValidation; data["Vulkan"]["validation_sync"] = vkValidationSync; + data["Vulkan"]["rdocEnable"] = rdocEnable; data["Debug"]["DebugDump"] = isDebugDump; data["LLE"]["libc"] = isLibc; data["GUI"]["theme"] = mw_themes; diff --git a/src/common/config.h b/src/common/config.h index 0a3b4905..637ac746 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -26,6 +26,8 @@ bool showSplash(); bool nullGpu(); bool dumpShaders(); bool dumpPM4(); +bool isRdocEnabled(); +u32 vblankDiv(); bool vkValidationEnabled(); bool vkValidationSyncEnabled(); diff --git a/src/common/path_util.cpp b/src/common/path_util.cpp index f0f56b85..c1e8a5c0 100644 --- a/src/common/path_util.cpp +++ b/src/common/path_util.cpp @@ -73,6 +73,7 @@ static auto UserPaths = [] { create_path(PathType::TempDataDir, user_dir / TEMPDATA_DIR); create_path(PathType::SysModuleDir, user_dir / SYSMODULES_DIR); create_path(PathType::DownloadDir, user_dir / DOWNLOAD_DIR); + create_path(PathType::CapturesDir, user_dir / CAPTURES_DIR); return paths; }(); diff --git a/src/common/path_util.h b/src/common/path_util.h index 67688f89..263edd46 100644 --- a/src/common/path_util.h +++ b/src/common/path_util.h @@ -19,6 +19,7 @@ enum class PathType { GameDataDir, // Where game data is stored. SysModuleDir, // Where system modules are stored. DownloadDir, // Where downloads/temp files are stored. + CapturesDir, // Where rdoc captures are stored. }; constexpr auto PORTABLE_DIR = "user"; @@ -33,6 +34,7 @@ constexpr auto GAMEDATA_DIR = "data"; constexpr auto TEMPDATA_DIR = "temp"; constexpr auto SYSMODULES_DIR = "sys_modules"; constexpr auto DOWNLOAD_DIR = "download"; +constexpr auto CAPTURES_DIR = "captures"; // Filenames constexpr auto LOG_FILE = "shad_log.txt"; diff --git a/src/core/libraries/gnmdriver/gnmdriver.cpp b/src/core/libraries/gnmdriver/gnmdriver.cpp index 866a9698..dba69d6e 100644 --- a/src/core/libraries/gnmdriver/gnmdriver.cpp +++ b/src/core/libraries/gnmdriver/gnmdriver.cpp @@ -20,13 +20,12 @@ extern Frontend::WindowSDL* g_window; std::unique_ptr renderer; +std::unique_ptr liverpool; namespace Libraries::GnmDriver { using namespace AmdGpu; -static std::unique_ptr liverpool; - enum GnmEventIdents : u64 { Compute0RelMem = 0x00, Compute1RelMem = 0x01, @@ -2131,6 +2130,7 @@ int PS4_SYSV_ABI sceGnmSubmitDone() { if (!liverpool->IsGpuIdle()) { submission_lock = true; } + liverpool->SubmitDone(); send_init_packet = true; ++frames_submitted; return ORBIS_OK; diff --git a/src/core/libraries/kernel/event_queue.cpp b/src/core/libraries/kernel/event_queue.cpp index 6bd88459..3555fddc 100644 --- a/src/core/libraries/kernel/event_queue.cpp +++ b/src/core/libraries/kernel/event_queue.cpp @@ -78,9 +78,7 @@ bool EqueueInternal::TriggerEvent(u64 ident, s16 filter, void* trigger_data) { std::scoped_lock lock{m_mutex}; for (auto& event : m_events) { - ASSERT_MSG(event.event.filter == filter, - "Event to trigger doesn't match to queue events"); - if (event.event.ident == ident) { + if ((event.event.ident == ident) && (event.event.filter == filter)) { event.Trigger(trigger_data); has_found = true; } diff --git a/src/core/libraries/libs.cpp b/src/core/libraries/libs.cpp index f9325297..47073b2c 100644 --- a/src/core/libraries/libs.cpp +++ b/src/core/libraries/libs.cpp @@ -43,8 +43,8 @@ namespace Libraries { void InitHLELibs(Core::Loader::SymbolsResolver* sym) { LOG_INFO(Lib_Kernel, "Initializing HLE libraries"); Libraries::Kernel::LibKernel_Register(sym); - Libraries::VideoOut::RegisterLib(sym); Libraries::GnmDriver::RegisterlibSceGnmDriver(sym); + Libraries::VideoOut::RegisterLib(sym); if (!Config::isLleLibc()) { Libraries::LibC::libcSymbolsRegister(sym); } diff --git a/src/core/libraries/videoout/driver.cpp b/src/core/libraries/videoout/driver.cpp index e74fb10f..97b1816e 100644 --- a/src/core/libraries/videoout/driver.cpp +++ b/src/core/libraries/videoout/driver.cpp @@ -3,14 +3,16 @@ #include #include "common/assert.h" +#include "common/config.h" +#include "common/debug.h" +#include "common/thread.h" #include "core/libraries/error_codes.h" #include "core/libraries/kernel/time_management.h" #include "core/libraries/videoout/driver.h" -#include "core/platform.h" - #include "video_core/renderer_vulkan/renderer_vulkan.h" extern std::unique_ptr renderer; +extern std::unique_ptr liverpool; namespace Libraries::VideoOut { @@ -41,20 +43,18 @@ VideoOutDriver::VideoOutDriver(u32 width, u32 height) { main_port.resolution.fullHeight = height; main_port.resolution.paneWidth = width; main_port.resolution.paneHeight = height; + present_thread = std::jthread([&](std::stop_token token) { PresentThread(token); }); } VideoOutDriver::~VideoOutDriver() = default; int VideoOutDriver::Open(const ServiceThreadParams* params) { - std::scoped_lock lock{mutex}; - if (main_port.is_open) { return ORBIS_VIDEO_OUT_ERROR_RESOURCE_BUSY; } - - int handle = 1; main_port.is_open = true; - return handle; + liverpool->SetVoPort(&main_port); + return 1; } void VideoOutDriver::Close(s32 handle) { @@ -158,31 +158,22 @@ int VideoOutDriver::UnregisterBuffers(VideoOutPort* port, s32 attributeIndex) { return ORBIS_OK; } -void VideoOutDriver::Flip(std::chrono::microseconds timeout) { - Request req; - { - std::unique_lock lock{mutex}; - submit_cond.wait_for(lock, timeout, [&] { return !requests.empty(); }); - if (requests.empty()) { - renderer->ShowSplash(); - return; - } - - // Retrieve the request. - req = requests.front(); - requests.pop(); +std::chrono::microseconds VideoOutDriver::Flip(const Request& req) { + if (!req) { + return std::chrono::microseconds{0}; } + const auto start = std::chrono::high_resolution_clock::now(); + // Whatever the game is rendering show splash if it is active if (!renderer->ShowSplash(req.frame)) { // Present the frame. renderer->Present(req.frame); } - std::scoped_lock lock{mutex}; - // Update flip status. - auto& flip_status = req.port->flip_status; + auto* port = req.port; + auto& flip_status = port->flip_status; flip_status.count++; flip_status.processTime = Libraries::Kernel::sceKernelGetProcessTime(); flip_status.tsc = Libraries::Kernel::sceKernelReadTsc(); @@ -192,7 +183,7 @@ void VideoOutDriver::Flip(std::chrono::microseconds timeout) { flip_status.flipPendingNum = static_cast(requests.size()); // Trigger flip events for the port. - for (auto& event : req.port->flip_events) { + for (auto& event : port->flip_events) { if (event != nullptr) { event->TriggerEvent(SCE_VIDEO_OUT_EVENT_FLIP, Kernel::SceKernelEvent::Filter::VideoOut, reinterpret_cast(req.flip_arg)); @@ -201,21 +192,23 @@ void VideoOutDriver::Flip(std::chrono::microseconds timeout) { // Reset flip label if (req.index != -1) { - req.port->buffer_labels[req.index] = 0; + port->buffer_labels[req.index] = 0; + port->SignalVoLabel(); } + + const auto end = std::chrono::high_resolution_clock::now(); + return std::chrono::duration_cast(end - start); } bool VideoOutDriver::SubmitFlip(VideoOutPort* port, s32 index, s64 flip_arg, bool is_eop /*= false*/) { - std::scoped_lock lock{mutex}; - Vulkan::Frame* frame; if (index == -1) { frame = renderer->PrepareBlankFrame(); } else { const auto& buffer = port->buffer_slots[index]; const auto& group = port->groups[buffer.group_index]; - frame = renderer->PrepareFrame(group, buffer.address_left); + frame = renderer->PrepareFrame(group, buffer.address_left, is_eop); } if (index != -1 && requests.size() >= port->NumRegisteredBuffers()) { @@ -223,6 +216,7 @@ bool VideoOutDriver::SubmitFlip(VideoOutPort* port, s32 index, s64 flip_arg, return false; } + std::scoped_lock lock{mutex}; requests.push({ .frame = frame, .port = port, @@ -234,24 +228,53 @@ bool VideoOutDriver::SubmitFlip(VideoOutPort* port, s32 index, s64 flip_arg, port->flip_status.flipPendingNum = static_cast(requests.size()); port->flip_status.gcQueueNum = 0; - submit_cond.notify_one(); return true; } -void VideoOutDriver::Vblank() { - std::scoped_lock lock{mutex}; +void VideoOutDriver::PresentThread(std::stop_token token) { + static constexpr std::chrono::milliseconds VblankPeriod{16}; + Common::SetCurrentThreadName("PresentThread"); - auto& vblank_status = main_port.vblank_status; - vblank_status.count++; - vblank_status.processTime = Libraries::Kernel::sceKernelGetProcessTime(); - vblank_status.tsc = Libraries::Kernel::sceKernelReadTsc(); + const auto receive_request = [this] -> Request { + std::scoped_lock lk{mutex}; + if (!requests.empty()) { + const auto request = requests.front(); + requests.pop(); + return request; + } + return {}; + }; - // Trigger flip events for the port. - for (auto& event : main_port.vblank_events) { - if (event != nullptr) { - event->TriggerEvent(SCE_VIDEO_OUT_EVENT_VBLANK, - Kernel::SceKernelEvent::Filter::VideoOut, nullptr); + auto vblank_period = VblankPeriod / Config::vblankDiv(); + auto delay = std::chrono::microseconds{0}; + while (!token.stop_requested()) { + // Sleep for most of the vblank duration. + std::this_thread::sleep_for(vblank_period - delay); + + // Check if it's time to take a request. + auto& vblank_status = main_port.vblank_status; + if (vblank_status.count % (main_port.flip_rate + 1) == 0) { + const auto request = receive_request(); + delay = Flip(request); + FRAME_END; + } + + { + // Needs lock here as can be concurrently read by `sceVideoOutGetVblankStatus` + std::unique_lock lock{main_port.vo_mutex}; + vblank_status.count++; + vblank_status.processTime = Libraries::Kernel::sceKernelGetProcessTime(); + vblank_status.tsc = Libraries::Kernel::sceKernelReadTsc(); + main_port.vblank_cv.notify_all(); + } + + // Trigger flip events for the port. + for (auto& event : main_port.vblank_events) { + if (event != nullptr) { + event->TriggerEvent(SCE_VIDEO_OUT_EVENT_VBLANK, + Kernel::SceKernelEvent::Filter::VideoOut, nullptr); + } } } } diff --git a/src/core/libraries/videoout/driver.h b/src/core/libraries/videoout/driver.h index d98e62ee..104056de 100644 --- a/src/core/libraries/videoout/driver.h +++ b/src/core/libraries/videoout/driver.h @@ -3,10 +3,13 @@ #pragma once +#include "common/debug.h" +#include "common/polyfill_thread.h" +#include "core/libraries/videoout/video_out.h" + #include #include #include -#include "core/libraries/videoout/video_out.h" namespace Vulkan { struct Frame; @@ -25,6 +28,9 @@ struct VideoOutPort { SceVideoOutVblankStatus vblank_status; std::vector flip_events; std::vector vblank_events; + std::mutex vo_mutex; + std::condition_variable vo_cv; + std::condition_variable vblank_cv; int flip_rate = 0; s32 FindFreeGroup() const { @@ -35,6 +41,22 @@ struct VideoOutPort { return index; } + bool IsVoLabel(const u64* address) const { + const u64* start = &buffer_labels[0]; + const u64* end = &buffer_labels[MaxDisplayBuffers - 1]; + return address >= start && address <= end; + } + + void WaitVoLabel(auto&& pred) { + std::unique_lock lk{vo_mutex}; + vo_cv.wait(lk, pred); + } + + void SignalVoLabel() { + std::scoped_lock lk{vo_mutex}; + vo_cv.notify_one(); + } + [[nodiscard]] int NumRegisteredBuffers() const { return std::count_if(buffer_slots.cbegin(), buffer_slots.cend(), [](auto& buffer) { return buffer.group_index != -1; }); @@ -63,11 +85,8 @@ public: const BufferAttribute* attribute); int UnregisterBuffers(VideoOutPort* port, s32 attributeIndex); - void Flip(std::chrono::microseconds timeout); bool SubmitFlip(VideoOutPort* port, s32 index, s64 flip_arg, bool is_eop = false); - void Vblank(); - private: struct Request { Vulkan::Frame* frame; @@ -76,14 +95,19 @@ private: s64 flip_arg; u64 submit_tsc; bool eop; + + operator bool() const noexcept { + return frame != nullptr; + } }; + std::chrono::microseconds Flip(const Request& req); + void PresentThread(std::stop_token token); + std::mutex mutex; VideoOutPort main_port{}; - std::condition_variable_any submit_cond; - std::condition_variable done_cond; + std::jthread present_thread; std::queue requests; - bool is_neo{}; }; } // namespace Libraries::VideoOut diff --git a/src/core/libraries/videoout/video_out.cpp b/src/core/libraries/videoout/video_out.cpp index 8fbd69c4..15e14662 100644 --- a/src/core/libraries/videoout/video_out.cpp +++ b/src/core/libraries/videoout/video_out.cpp @@ -183,6 +183,7 @@ s32 PS4_SYSV_ABI sceVideoOutGetVblankStatus(int handle, SceVideoOutVblankStatus* return ORBIS_VIDEO_OUT_ERROR_INVALID_HANDLE; } + std::unique_lock lock{port->vo_mutex}; *status = port->vblank_status; return ORBIS_OK; } @@ -229,14 +230,6 @@ s32 PS4_SYSV_ABI sceVideoOutUnregisterBuffers(s32 handle, s32 attributeIndex) { return driver->UnregisterBuffers(port, attributeIndex); } -void Flip(std::chrono::microseconds micros) { - return driver->Flip(micros); -} - -void Vblank() { - return driver->Vblank(); -} - void sceVideoOutGetBufferLabelAddress(s32 handle, uintptr_t* label_addr) { auto* port = driver->GetPort(handle); ASSERT(port); @@ -266,6 +259,18 @@ s32 PS4_SYSV_ABI sceVideoOutGetDeviceCapabilityInfo( return ORBIS_OK; } +s32 PS4_SYSV_ABI sceVideoOutWaitVblank(s32 handle) { + auto* port = driver->GetPort(handle); + if (!port) { + return ORBIS_VIDEO_OUT_ERROR_INVALID_HANDLE; + } + + std::unique_lock lock{port->vo_mutex}; + const auto prev_counter = port->vblank_status.count; + port->vblank_cv.wait(lock, [&]() { return prev_counter != port->vblank_status.count; }); + return ORBIS_OK; +} + void RegisterLib(Core::Loader::SymbolsResolver* sym) { driver = std::make_unique(Config::getScreenWidth(), Config::getScreenHeight()); @@ -294,6 +299,7 @@ void RegisterLib(Core::Loader::SymbolsResolver* sym) { sceVideoOutGetVblankStatus); LIB_FUNCTION("kGVLc3htQE8", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutGetDeviceCapabilityInfo); + LIB_FUNCTION("j6RaAUlaLv0", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutWaitVblank); // openOrbis appears to have libSceVideoOut_v1 module libSceVideoOut_v1.1 LIB_FUNCTION("Up36PTk687E", "libSceVideoOut", 1, "libSceVideoOut", 1, 1, sceVideoOutOpen); diff --git a/src/core/libraries/videoout/video_out.h b/src/core/libraries/videoout/video_out.h index 52426ecc..b4423efd 100644 --- a/src/core/libraries/videoout/video_out.h +++ b/src/core/libraries/videoout/video_out.h @@ -92,11 +92,12 @@ void PS4_SYSV_ABI sceVideoOutSetBufferAttribute(BufferAttribute* attribute, Pixe u32 tilingMode, u32 aspectRatio, u32 width, u32 height, u32 pitchInPixel); s32 PS4_SYSV_ABI sceVideoOutAddFlipEvent(Kernel::SceKernelEqueue eq, s32 handle, void* udata); -s32 PS4_SYSV_ABI sceVideoOutAddVBlankEvent(Kernel::SceKernelEqueue eq, s32 handle, void* udata); +s32 PS4_SYSV_ABI sceVideoOutAddVblankEvent(Kernel::SceKernelEqueue eq, s32 handle, void* udata); s32 PS4_SYSV_ABI sceVideoOutRegisterBuffers(s32 handle, s32 startIndex, void* const* addresses, s32 bufferNum, const BufferAttribute* attribute); s32 PS4_SYSV_ABI sceVideoOutSetFlipRate(s32 handle, s32 rate); s32 PS4_SYSV_ABI sceVideoOutIsFlipPending(s32 handle); +s32 PS4_SYSV_ABI sceVideoOutWaitVblank(s32 handle); s32 PS4_SYSV_ABI sceVideoOutSubmitFlip(s32 handle, s32 bufferIndex, s32 flipMode, s64 flipArg); s32 PS4_SYSV_ABI sceVideoOutGetFlipStatus(s32 handle, FlipStatus* status); s32 PS4_SYSV_ABI sceVideoOutGetResolutionStatus(s32 handle, SceVideoOutResolutionStatus* status); @@ -104,9 +105,6 @@ s32 PS4_SYSV_ABI sceVideoOutOpen(SceUserServiceUserId userId, s32 busType, s32 i const void* param); s32 PS4_SYSV_ABI sceVideoOutClose(s32 handle); -void Flip(std::chrono::microseconds micros); -void Vblank(); - // Internal system functions void sceVideoOutGetBufferLabelAddress(s32 handle, uintptr_t* label_addr); s32 sceVideoOutSubmitEopFlip(s32 handle, u32 buf_id, u32 mode, u32 arg, void** unk); diff --git a/src/emulator.cpp b/src/emulator.cpp index 0b542e68..5b162e05 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -1,7 +1,6 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include #include #include #include @@ -10,21 +9,30 @@ #include #include #include -#include #include "common/config.h" #include "common/debug.h" #include "common/logging/backend.h" +#include "common/logging/log.h" #include "common/ntapi.h" #include "common/path_util.h" #include "common/polyfill_thread.h" #include "common/singleton.h" #include "common/version.h" +#include "core/file_format/psf.h" +#include "core/file_format/splash.h" #include "core/file_sys/fs.h" +#include "core/libraries/disc_map/disc_map.h" #include "core/libraries/kernel/thread_management.h" +#include "core/libraries/libc/libc.h" +#include "core/libraries/libc_internal/libc_internal.h" #include "core/libraries/libs.h" +#include "core/libraries/rtc/rtc.h" #include "core/linker.h" #include "core/memory.h" #include "emulator.h" +#include "video_core/renderdoc.h" + +#include Frontend::WindowSDL* g_window = nullptr; @@ -52,6 +60,9 @@ Emulator::Emulator() { memory = Core::Memory::Instance(); controller = Common::Singleton::Instance(); linker = Common::Singleton::Instance(); + + // Load renderdoc module. + VideoCore::LoadRenderDoc(); } Emulator::~Emulator() { @@ -120,6 +131,12 @@ void Emulator::Run(const std::filesystem::path& file) { } mnt->Mount(mount_download_dir, "/download0"); + const auto& mount_captures_dir = Common::FS::GetUserPath(Common::FS::PathType::CapturesDir); + if (!std::filesystem::exists(mount_captures_dir)) { + std::filesystem::create_directory(mount_captures_dir); + } + VideoCore::SetOutputDir(mount_captures_dir.generic_string(), id); + // Initialize kernel and library facilities. Libraries::Kernel::init_pthreads(); Libraries::InitHLELibs(&linker->GetHLESymbols()); @@ -152,14 +169,8 @@ void Emulator::Run(const std::filesystem::path& file) { std::jthread mainthread = std::jthread([this](std::stop_token stop_token) { linker->Execute(); }); - // Begin main window loop until the application exits - static constexpr std::chrono::milliseconds FlipPeriod{16}; - while (window->isOpen()) { window->waitEvent(); - Libraries::VideoOut::Flip(FlipPeriod); - Libraries::VideoOut::Vblank(); - FRAME_END; } std::exit(0); diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index 4570b64e..2da24610 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -11,6 +11,7 @@ #include "core/libraries/pad/pad.h" #include "input/controller.h" #include "sdl_window.h" +#include "video_core/renderdoc.h" #ifdef __APPLE__ #include @@ -72,7 +73,7 @@ void WindowSDL::waitEvent() { // Called on main thread SDL_Event event; - if (!SDL_PollEvent(&event)) { + if (!SDL_WaitEvent(&event)) { return; } @@ -180,6 +181,11 @@ void WindowSDL::onKeyPress(const SDL_Event* event) { ax = Input::GetAxis(-0x80, 0x80, axisvalue); break; case SDLK_S: + if (event->key.mod == SDL_KMOD_LCTRL) { + // Trigger rdoc capture + VideoCore::TriggerCapture(); + break; + } axis = Input::Axis::LeftY; if (event->type == SDL_EVENT_KEY_DOWN) { axisvalue += 127; diff --git a/src/video_core/amdgpu/liverpool.cpp b/src/video_core/amdgpu/liverpool.cpp index ab7ad241..df7eec82 100644 --- a/src/video_core/amdgpu/liverpool.cpp +++ b/src/video_core/amdgpu/liverpool.cpp @@ -5,8 +5,10 @@ #include "common/debug.h" #include "common/polyfill_thread.h" #include "common/thread.h" +#include "core/libraries/videoout/driver.h" #include "video_core/amdgpu/liverpool.h" #include "video_core/amdgpu/pm4_cmds.h" +#include "video_core/renderdoc.h" #include "video_core/renderer_vulkan/vk_rasterizer.h" namespace AmdGpu { @@ -32,12 +34,15 @@ void Liverpool::Process(std::stop_token stoken) { while (!stoken.stop_requested()) { { std::unique_lock lk{submit_mutex}; - Common::CondvarWait(submit_cv, lk, stoken, [this] { return num_submits != 0; }); + Common::CondvarWait(submit_cv, lk, stoken, + [this] { return num_submits != 0 || submit_done; }); } if (stoken.stop_requested()) { break; } + VideoCore::StartCapture(); + int qid = -1; while (num_submits) { @@ -48,11 +53,9 @@ void Liverpool::Process(std::stop_token stoken) { Task::Handle task{}; { std::scoped_lock lock{queue.m_access}; - if (queue.submits.empty()) { continue; } - task = queue.submits.front(); } task.resume(); @@ -64,9 +67,20 @@ void Liverpool::Process(std::stop_token stoken) { queue.submits.pop(); --num_submits; + std::scoped_lock lock2{submit_mutex}; + submit_cv.notify_all(); } } + if (submit_done) { + VideoCore::EndCapture(); + + if (rasterizer) { + rasterizer->Flush(); + } + submit_done = false; + } + Platform::IrqC::Instance()->Signal(Platform::InterruptId::GpuIdle); } } @@ -365,8 +379,9 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); ASSERT(write_data->dst_sel.Value() == 2 || write_data->dst_sel.Value() == 5); const u32 data_size = (header->type3.count.Value() - 2) * 4; + u64* address = write_data->Address(); if (!write_data->wr_one_addr.Value()) { - std::memcpy(write_data->Address(), write_data->data, data_size); + std::memcpy(address, write_data->data, data_size); } else { UNREACHABLE(); } @@ -379,6 +394,14 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::span(header); ASSERT(wait_reg_mem->engine.Value() == PM4CmdWaitRegMem::Engine::Me); + // Optimization: VO label waits are special because the emulator + // will write to the label when presentation is finished. So if + // there are no other submits to yield to we can sleep the thread + // instead and allow other tasks to run. + const u64* wait_addr = wait_reg_mem->Address(); + if (vo_port->IsVoLabel(wait_addr) && num_submits == 1) { + vo_port->WaitVoLabel([&] { return wait_reg_mem->Test(); }); + } while (!wait_reg_mem->Test()) { TracyFiberLeave; co_yield {}; @@ -511,7 +534,7 @@ void Liverpool::SubmitGfx(std::span dcb, std::span ccb) { auto task = ProcessGraphics(dcb, ccb); { - std::unique_lock lock{queue.m_access}; + std::scoped_lock lock{queue.m_access}; queue.submits.emplace(task.handle); } @@ -526,7 +549,7 @@ void Liverpool::SubmitAsc(u32 vqid, std::span acb) { const auto& task = ProcessCompute(acb, vqid); { - std::unique_lock lock{queue.m_access}; + std::scoped_lock lock{queue.m_access}; queue.submits.emplace(task.handle); } diff --git a/src/video_core/amdgpu/liverpool.h b/src/video_core/amdgpu/liverpool.h index b87c80ed..8553bc92 100644 --- a/src/video_core/amdgpu/liverpool.h +++ b/src/video_core/amdgpu/liverpool.h @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -21,6 +22,10 @@ namespace Vulkan { class Rasterizer; } +namespace Libraries::VideoOut { +struct VideoOutPort; +} + namespace AmdGpu { #define GFX6_3D_REG_INDEX(field_name) (offsetof(AmdGpu::Liverpool::Regs, field_name) / sizeof(u32)) @@ -991,10 +996,25 @@ public: void SubmitGfx(std::span dcb, std::span ccb); void SubmitAsc(u32 vqid, std::span acb); + void SubmitDone() noexcept { + std::scoped_lock lk{submit_mutex}; + submit_done = true; + submit_cv.notify_one(); + } + + void WaitGpuIdle() noexcept { + std::unique_lock lk{submit_mutex}; + submit_cv.wait(lk, [this] { return num_submits == 0; }); + } + bool IsGpuIdle() const { return num_submits == 0; } + void SetVoPort(Libraries::VideoOut::VideoOutPort* port) { + vo_port = port; + } + void BindRasterizer(Vulkan::Rasterizer* rasterizer_) { rasterizer = rasterizer_; } @@ -1059,8 +1079,10 @@ private: } cblock{}; Vulkan::Rasterizer* rasterizer{}; + Libraries::VideoOut::VideoOutPort* vo_port{}; std::jthread process_thread{}; std::atomic num_submits{}; + std::atomic submit_done{}; std::mutex submit_mutex; std::condition_variable_any submit_cv; }; diff --git a/src/video_core/amdgpu/pm4_cmds.h b/src/video_core/amdgpu/pm4_cmds.h index eded2de3..9b44da02 100644 --- a/src/video_core/amdgpu/pm4_cmds.h +++ b/src/video_core/amdgpu/pm4_cmds.h @@ -404,8 +404,9 @@ struct PM4CmdWaitRegMem { u32 mask; u32 poll_interval; - u32* Address() const { - return reinterpret_cast((uintptr_t(poll_addr_hi) << 32) | poll_addr_lo); + template + T Address() const { + return reinterpret_cast((uintptr_t(poll_addr_hi) << 32) | poll_addr_lo); } bool Test() const { @@ -464,8 +465,8 @@ struct PM4CmdWriteData { } template - T* Address() const { - return reinterpret_cast(addr64); + T Address() const { + return reinterpret_cast(addr64); } }; @@ -494,8 +495,9 @@ struct PM4CmdEventWriteEos { BitField<16, 16, u32> size; ///< Number of DWs to read from the GDS }; - u32* Address() const { - return reinterpret_cast(address_lo | u64(address_hi) << 32); + template + T Address() const { + return reinterpret_cast(address_lo | u64(address_hi) << 32); } u32 DataDWord() const { diff --git a/src/video_core/renderdoc.cpp b/src/video_core/renderdoc.cpp new file mode 100644 index 00000000..7f88e126 --- /dev/null +++ b/src/video_core/renderdoc.cpp @@ -0,0 +1,120 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/assert.h" +#include "common/config.h" +#include "video_core/renderdoc.h" + +#include + +#ifdef _WIN32 +#include +#else +#include +#endif + +#include + +namespace VideoCore { + +enum class CaptureState { + Idle, + Triggered, + InProgress, +}; +static CaptureState capture_state{CaptureState::Idle}; + +RENDERDOC_API_1_6_0* rdoc_api{}; + +void LoadRenderDoc() { +#ifdef WIN32 + + // Check if we are running by RDoc GUI + HMODULE mod = GetModuleHandleA("renderdoc.dll"); + if (!mod && Config::isRdocEnabled()) { + // If enabled in config, try to load RDoc runtime in offline mode + HKEY h_reg_key; + LONG result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Classes\\RenderDoc.RDCCapture.1\\DefaultIcon\\", 0, + KEY_READ, &h_reg_key); + if (result != ERROR_SUCCESS) { + return; + } + std::array key_str{}; + DWORD str_sz_out{key_str.size()}; + result = RegQueryValueExW(h_reg_key, L"", 0, NULL, (LPBYTE)key_str.data(), &str_sz_out); + if (result != ERROR_SUCCESS) { + return; + } + + std::filesystem::path path{key_str.cbegin(), key_str.cend()}; + path = path.parent_path().append("renderdoc.dll"); + const auto path_to_lib = path.generic_string(); + mod = LoadLibraryA(path_to_lib.c_str()); + } + + if (mod) { + const auto RENDERDOC_GetAPI = + reinterpret_cast(GetProcAddress(mod, "RENDERDOC_GetAPI")); + const s32 ret = RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_6_0, (void**)&rdoc_api); + ASSERT(ret == 1); + } +#else +#ifdef ANDROID + static constexpr const char RENDERDOC_LIB[] = "libVkLayer_GLES_RenderDoc.so"; +#else + static constexpr const char RENDERDOC_LIB[] = "librenderdoc.so"; +#endif + if (void* mod = dlopen(RENDERDOC_LIB, RTLD_NOW | RTLD_NOLOAD)) { + const auto RENDERDOC_GetAPI = + reinterpret_cast(dlsym(mod, "RENDERDOC_GetAPI")); + const s32 ret = RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_6_0, (void**)&rdoc_api); + ASSERT(ret == 1); + } +#endif + if (rdoc_api) { + // Disable default capture keys as they suppose to trigger present-to-present capturing + // and it is not what we want + rdoc_api->SetCaptureKeys(nullptr, 0); + + // Also remove rdoc crash handler + rdoc_api->UnloadCrashHandler(); + } +} + +void StartCapture() { + if (!rdoc_api) { + return; + } + + if (capture_state == CaptureState::Triggered) { + rdoc_api->StartFrameCapture(nullptr, nullptr); + capture_state = CaptureState::InProgress; + } +} + +void EndCapture() { + if (!rdoc_api) { + return; + } + + if (capture_state == CaptureState::InProgress) { + rdoc_api->EndFrameCapture(nullptr, nullptr); + capture_state = CaptureState::Idle; + } +} + +void TriggerCapture() { + if (capture_state == CaptureState::Idle) { + capture_state = CaptureState::Triggered; + } +} + +void SetOutputDir(const std::string& path, const std::string& prefix) { + if (!rdoc_api) { + return; + } + rdoc_api->SetCaptureFilePathTemplate((path + '\\' + prefix).c_str()); +} + +} // namespace VideoCore diff --git a/src/video_core/renderdoc.h b/src/video_core/renderdoc.h new file mode 100644 index 00000000..febf6fbc --- /dev/null +++ b/src/video_core/renderdoc.h @@ -0,0 +1,25 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +namespace VideoCore { + +/// Loads renderdoc dynamic library module. +void LoadRenderDoc(); + +/// Begins a capture if a renderdoc instance is attached. +void StartCapture(); + +/// Ends current renderdoc capture. +void EndCapture(); + +/// Triggers capturing process. +void TriggerCapture(); + +/// Sets output directory for captures +void SetOutputDir(const std::string& path, const std::string& prefix); + +} // namespace VideoCore diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index 098f14d9..6810bf34 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -63,44 +63,30 @@ bool CanBlitToSwapchain(const vk::PhysicalDevice physical_device, vk::Format for }; } -RendererVulkan::RendererVulkan(Frontend::WindowSDL& window_, AmdGpu::Liverpool* liverpool) - : window{window_}, instance{window, Config::getGpuId(), Config::vkValidationEnabled()}, - scheduler{instance}, swapchain{instance, window}, texture_cache{instance, scheduler} { - rasterizer = std::make_unique(instance, scheduler, texture_cache, liverpool); +RendererVulkan::RendererVulkan(Frontend::WindowSDL& window_, AmdGpu::Liverpool* liverpool_) + : window{window_}, liverpool{liverpool_}, + instance{window, Config::getGpuId(), Config::vkValidationEnabled()}, draw_scheduler{instance}, + present_scheduler{instance}, flip_scheduler{instance}, swapchain{instance, window}, + texture_cache{instance, draw_scheduler} { + rasterizer = std::make_unique(instance, draw_scheduler, texture_cache, liverpool); const u32 num_images = swapchain.GetImageCount(); const vk::Device device = instance.GetDevice(); - const vk::CommandPoolCreateInfo pool_info = { - .flags = vk::CommandPoolCreateFlagBits::eResetCommandBuffer | - vk::CommandPoolCreateFlagBits::eTransient, - .queueFamilyIndex = instance.GetGraphicsQueueFamilyIndex(), - }; - command_pool = device.createCommandPoolUnique(pool_info); - - const vk::CommandBufferAllocateInfo alloc_info = { - .commandPool = *command_pool, - .level = vk::CommandBufferLevel::ePrimary, - .commandBufferCount = num_images, - }; - - const auto cmdbuffers = device.allocateCommandBuffers(alloc_info); + // Create presentation frames. present_frames.resize(num_images); for (u32 i = 0; i < num_images; i++) { Frame& frame = present_frames[i]; - frame.cmdbuf = cmdbuffers[i]; - frame.render_ready = device.createSemaphore({}); frame.present_done = device.createFence({.flags = vk::FenceCreateFlagBits::eSignaled}); free_queue.push(&frame); } } RendererVulkan::~RendererVulkan() { - scheduler.Finish(); + draw_scheduler.Finish(); const vk::Device device = instance.GetDevice(); for (auto& frame : present_frames) { vmaDestroyImage(instance.GetAllocator(), frame.image, frame.allocation); device.destroyImageView(frame.image_view); - device.destroySemaphore(frame.render_ready); device.destroyFence(frame.present_done); } } @@ -184,7 +170,7 @@ bool RendererVulkan::ShowSplash(Frame* frame /*= nullptr*/) { info.pitch = splash->GetImageInfo().width; info.guest_address = VAddr(splash->GetImageData().data()); info.guest_size_bytes = splash->GetImageData().size(); - splash_img.emplace(instance, scheduler, info); + splash_img.emplace(instance, present_scheduler, info); texture_cache.RefreshImage(*splash_img); } frame = PrepareFrameInternal(*splash_img); @@ -193,12 +179,18 @@ bool RendererVulkan::ShowSplash(Frame* frame /*= nullptr*/) { return true; } -Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image) { +Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image, bool is_eop) { // Request a free presentation frame. Frame* frame = GetRenderFrame(); - // Post-processing (Anti-aliasing, FSR etc) goes here. For now just blit to the frame image. - image.Transit(vk::ImageLayout::eTransferSrcOptimal, vk::AccessFlagBits::eTransferRead); + // EOP flips are triggered from GPU thread so use the drawing scheduler to record + // commands. Otherwise we are dealing with a CPU flip which could have arrived + // from any guest thread. Use a separate scheduler for that. + auto& scheduler = is_eop ? draw_scheduler : flip_scheduler; + scheduler.EndRendering(); + const auto cmdbuf = scheduler.CommandBuffer(); + + image.Transit(vk::ImageLayout::eTransferSrcOptimal, vk::AccessFlagBits::eTransferRead, cmdbuf); const std::array pre_barrier{ vk::ImageMemoryBarrier{ @@ -218,12 +210,11 @@ Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image) { }, }, }; - - const auto cmdbuf = scheduler.CommandBuffer(); cmdbuf.pipelineBarrier(vk::PipelineStageFlagBits::eTransfer, vk::PipelineStageFlagBits::eTransfer, vk::DependencyFlagBits::eByRegion, {}, {}, pre_barrier); + // Post-processing (Anti-aliasing, FSR etc) goes here. For now just blit to the frame image. cmdbuf.blitImage( image.image, image.layout, frame->image, vk::ImageLayout::eTransferDstOptimal, MakeImageBlit(image.info.size.width, image.info.size.height, frame->width, frame->height), @@ -245,13 +236,15 @@ Frame* RendererVulkan::PrepareFrameInternal(VideoCore::Image& image) { .layerCount = VK_REMAINING_ARRAY_LAYERS, }, }; - cmdbuf.pipelineBarrier(vk::PipelineStageFlagBits::eAllCommands, vk::PipelineStageFlagBits::eAllCommands, vk::DependencyFlagBits::eByRegion, {}, {}, post_barrier); - // Flush pending vulkan operations. - scheduler.Flush(frame->render_ready); + // Flush frame creation commands. + frame->ready_semaphore = scheduler.GetMasterSemaphore()->Handle(); + frame->ready_tick = scheduler.CurrentTick(); + SubmitInfo info{}; + scheduler.Flush(info); return frame; } @@ -260,11 +253,8 @@ void RendererVulkan::Present(Frame* frame) { const vk::Image swapchain_image = swapchain.Image(); - const vk::CommandBufferBeginInfo begin_info = { - .flags = vk::CommandBufferUsageFlagBits::eOneTimeSubmit, - }; - const vk::CommandBuffer cmdbuf = frame->cmdbuf; - cmdbuf.begin(begin_info); + auto& scheduler = present_scheduler; + const auto cmdbuf = scheduler.CommandBuffer(); { auto* profiler_ctx = instance.GetProfilerContext(); TracyVkNamedZoneC(profiler_ctx, renderer_gpu_zone, cmdbuf, "Host frame", @@ -339,35 +329,17 @@ void RendererVulkan::Present(Frame* frame) { TracyVkCollect(profiler_ctx, cmdbuf); } } - cmdbuf.end(); - static constexpr std::array wait_stage_masks = { - vk::PipelineStageFlagBits::eColorAttachmentOutput, - vk::PipelineStageFlagBits::eAllGraphics, - }; - - const vk::Semaphore present_ready = swapchain.GetPresentReadySemaphore(); - const vk::Semaphore image_acquired = swapchain.GetImageAcquiredSemaphore(); - const std::array wait_semaphores = {image_acquired, frame->render_ready}; - - vk::SubmitInfo submit_info = { - .waitSemaphoreCount = static_cast(wait_semaphores.size()), - .pWaitSemaphores = wait_semaphores.data(), - .pWaitDstStageMask = wait_stage_masks.data(), - .commandBufferCount = 1u, - .pCommandBuffers = &cmdbuf, - .signalSemaphoreCount = 1, - .pSignalSemaphores = &present_ready, - }; - - std::scoped_lock submit_lock{scheduler.submit_mutex}; - try { - instance.GetGraphicsQueue().submit(submit_info, frame->present_done); - } catch (vk::DeviceLostError& err) { - LOG_CRITICAL(Render_Vulkan, "Device lost during present submit: {}", err.what()); - UNREACHABLE(); - } + // Flush vulkan commands. + SubmitInfo info{}; + info.AddWait(swapchain.GetImageAcquiredSemaphore()); + info.AddWait(frame->ready_semaphore, frame->ready_tick); + info.AddSignal(swapchain.GetPresentReadySemaphore()); + info.AddSignal(frame->present_done); + scheduler.Flush(info); + // Present to swapchain. + std::scoped_lock submit_lock{Scheduler::submit_mutex}; swapchain.Present(); // Free the frame for reuse diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.h b/src/video_core/renderer_vulkan/renderer_vulkan.h index 701d3d14..3fe9267f 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.h +++ b/src/video_core/renderer_vulkan/renderer_vulkan.h @@ -26,9 +26,15 @@ struct Frame { VmaAllocation allocation; vk::Image image; vk::ImageView image_view; - vk::Semaphore render_ready; vk::Fence present_done; - vk::CommandBuffer cmdbuf; + vk::Semaphore ready_semaphore; + u64 ready_tick; +}; + +enum SchedulerType { + Draw, + Present, + CpuFlip, }; class Rasterizer; @@ -39,16 +45,16 @@ public: ~RendererVulkan(); Frame* PrepareFrame(const Libraries::VideoOut::BufferAttributeGroup& attribute, - VAddr cpu_address) { + VAddr cpu_address, bool is_eop) { const auto info = VideoCore::ImageInfo{attribute, cpu_address}; const auto image_id = texture_cache.FindImage(info, cpu_address); auto& image = texture_cache.GetImage(image_id); - return PrepareFrameInternal(image); + return PrepareFrameInternal(image, is_eop); } Frame* PrepareBlankFrame() { auto& image = texture_cache.GetImage(VideoCore::NULL_IMAGE_ID); - return PrepareFrameInternal(image); + return PrepareFrameInternal(image, true); } VideoCore::Image& RegisterVideoOutSurface( @@ -60,9 +66,9 @@ public: } bool IsVideoOutSurface(const AmdGpu::Liverpool::ColorBuffer& color_buffer) { - return std::find_if(vo_buffers_addr.cbegin(), vo_buffers_addr.cend(), [&](VAddr vo_buffer) { + return std::ranges::find_if(vo_buffers_addr, [&](VAddr vo_buffer) { return vo_buffer == color_buffer.Address(); - }) != vo_buffers_addr.cend(); + }) != vo_buffers_addr.end(); } bool ShowSplash(Frame* frame = nullptr); @@ -70,13 +76,16 @@ public: void RecreateFrame(Frame* frame, u32 width, u32 height); private: - Frame* PrepareFrameInternal(VideoCore::Image& image); + Frame* PrepareFrameInternal(VideoCore::Image& image, bool is_eop = true); Frame* GetRenderFrame(); private: Frontend::WindowSDL& window; + AmdGpu::Liverpool* liverpool; Instance instance; - Scheduler scheduler; + Scheduler draw_scheduler; + Scheduler present_scheduler; + Scheduler flip_scheduler; Swapchain swapchain; std::unique_ptr rasterizer; VideoCore::TextureCache texture_cache; diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp index 037510d4..753f2bbd 100644 --- a/src/video_core/renderer_vulkan/vk_master_semaphore.cpp +++ b/src/video_core/renderer_vulkan/vk_master_semaphore.cpp @@ -2,8 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include -#include -#include "common/assert.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_master_semaphore.h" @@ -60,46 +58,4 @@ void MasterSemaphore::Wait(u64 tick) { Refresh(); } -void MasterSemaphore::SubmitWork(vk::CommandBuffer cmdbuf, vk::Semaphore wait, vk::Semaphore signal, - u64 signal_value) { - cmdbuf.end(); - - const u32 num_signal_semaphores = signal ? 2U : 1U; - const std::array signal_values{signal_value, u64(0)}; - const std::array signal_semaphores{Handle(), signal}; - - const u32 num_wait_semaphores = wait ? 2U : 1U; - const std::array wait_values{signal_value - 1, u64(1)}; - const std::array wait_semaphores{Handle(), wait}; - - static constexpr std::array wait_stage_masks = { - vk::PipelineStageFlagBits::eAllCommands, - vk::PipelineStageFlagBits::eColorAttachmentOutput, - }; - - const vk::TimelineSemaphoreSubmitInfo timeline_si = { - .waitSemaphoreValueCount = num_wait_semaphores, - .pWaitSemaphoreValues = wait_values.data(), - .signalSemaphoreValueCount = num_signal_semaphores, - .pSignalSemaphoreValues = signal_values.data(), - }; - - const vk::SubmitInfo submit_info = { - .pNext = &timeline_si, - .waitSemaphoreCount = num_wait_semaphores, - .pWaitSemaphores = wait_semaphores.data(), - .pWaitDstStageMask = wait_stage_masks.data(), - .commandBufferCount = 1u, - .pCommandBuffers = &cmdbuf, - .signalSemaphoreCount = num_signal_semaphores, - .pSignalSemaphores = signal_semaphores.data(), - }; - - try { - instance.GetGraphicsQueue().submit(submit_info); - } catch (vk::DeviceLostError& err) { - UNREACHABLE_MSG("Device lost during submit: {}", err.what()); - } -} - } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.h b/src/video_core/renderer_vulkan/vk_master_semaphore.h index 963676b1..ebc7a60a 100644 --- a/src/video_core/renderer_vulkan/vk_master_semaphore.h +++ b/src/video_core/renderer_vulkan/vk_master_semaphore.h @@ -46,10 +46,6 @@ public: /// Waits for a tick to be hit on the GPU void Wait(u64 tick); - /// Submits the provided command buffer for execution - void SubmitWork(vk::CommandBuffer cmdbuf, vk::Semaphore wait, vk::Semaphore signal, - u64 signal_value); - protected: const Instance& instance; vk::UniqueSemaphore semaphore; ///< Timeline semaphore. diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index fe52d074..67a88c47 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -96,6 +96,13 @@ void Rasterizer::DispatchDirect() { cmdbuf.dispatch(cs_program.dim_x, cs_program.dim_y, cs_program.dim_z); } +u64 Rasterizer::Flush() { + const u64 current_tick = scheduler.CurrentTick(); + SubmitInfo info{}; + scheduler.Flush(info); + return current_tick; +} + void Rasterizer::BeginRendering() { const auto& regs = liverpool->regs; RenderState state; diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index aead5955..64dc87ef 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -36,6 +36,8 @@ public: void ScopeMarkerBegin(const std::string& str); void ScopeMarkerEnd(); + u64 Flush(); + private: u32 SetupIndexBuffer(bool& is_indexed, u32 index_offset); void MapMemory(VAddr addr, size_t size); diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index 39dc2847..e7b12d49 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -2,12 +2,15 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include "common/assert.h" #include "common/debug.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/renderer_vulkan/vk_scheduler.h" namespace Vulkan { +std::mutex Scheduler::submit_mutex; + Scheduler::Scheduler(const Instance& instance) : instance{instance}, master_semaphore{instance}, command_pool{instance, &master_semaphore} { profiler_scope = reinterpret_cast(std::malloc(sizeof(tracy::VkCtxScope))); @@ -50,22 +53,24 @@ void Scheduler::EndRendering() { current_cmdbuf.endRendering(); } -void Scheduler::Flush(vk::Semaphore signal, vk::Semaphore wait) { - // When flushing, we only send data to the worker thread; no waiting is necessary. - SubmitExecution(signal, wait); +void Scheduler::Flush(SubmitInfo& info) { + // When flushing, we only send data to the driver; no waiting is necessary. + SubmitExecution(info); } -void Scheduler::Finish(vk::Semaphore signal, vk::Semaphore wait) { +void Scheduler::Finish() { // When finishing, we need to wait for the submission to have executed on the device. const u64 presubmit_tick = CurrentTick(); - SubmitExecution(signal, wait); + SubmitInfo info{}; + SubmitExecution(info); Wait(presubmit_tick); } void Scheduler::Wait(u64 tick) { if (tick >= master_semaphore.CurrentTick()) { // Make sure we are not waiting for the current tick without signalling - Flush(); + SubmitInfo info{}; + Flush(info); } master_semaphore.Wait(tick); } @@ -86,7 +91,7 @@ void Scheduler::AllocateWorkerCommandBuffers() { } } -void Scheduler::SubmitExecution(vk::Semaphore signal_semaphore, vk::Semaphore wait_semaphore) { +void Scheduler::SubmitExecution(SubmitInfo& info) { std::scoped_lock lk{submit_mutex}; const u64 signal_value = master_semaphore.NextTick(); @@ -97,7 +102,40 @@ void Scheduler::SubmitExecution(vk::Semaphore signal_semaphore, vk::Semaphore wa } EndRendering(); - master_semaphore.SubmitWork(current_cmdbuf, wait_semaphore, signal_semaphore, signal_value); + current_cmdbuf.end(); + + const vk::Semaphore timeline = master_semaphore.Handle(); + info.AddSignal(timeline, signal_value); + + static constexpr std::array wait_stage_masks = { + vk::PipelineStageFlagBits::eAllCommands, + vk::PipelineStageFlagBits::eColorAttachmentOutput, + }; + + const vk::TimelineSemaphoreSubmitInfo timeline_si = { + .waitSemaphoreValueCount = static_cast(info.wait_ticks.size()), + .pWaitSemaphoreValues = info.wait_ticks.data(), + .signalSemaphoreValueCount = static_cast(info.signal_ticks.size()), + .pSignalSemaphoreValues = info.signal_ticks.data(), + }; + + const vk::SubmitInfo submit_info = { + .pNext = &timeline_si, + .waitSemaphoreCount = static_cast(info.wait_semas.size()), + .pWaitSemaphores = info.wait_semas.data(), + .pWaitDstStageMask = wait_stage_masks.data(), + .commandBufferCount = 1U, + .pCommandBuffers = ¤t_cmdbuf, + .signalSemaphoreCount = static_cast(info.signal_semas.size()), + .pSignalSemaphores = info.signal_semas.data(), + }; + + try { + instance.GetGraphicsQueue().submit(submit_info, info.fence); + } catch (vk::DeviceLostError& err) { + UNREACHABLE_MSG("Device lost during submit: {}", err.what()); + } + master_semaphore.Refresh(); AllocateWorkerCommandBuffers(); diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h index b4504274..1e640b08 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.h +++ b/src/video_core/renderer_vulkan/vk_scheduler.h @@ -26,16 +26,39 @@ struct RenderState { } }; +struct SubmitInfo { + boost::container::static_vector wait_semas; + boost::container::static_vector wait_ticks; + boost::container::static_vector signal_semas; + boost::container::static_vector signal_ticks; + vk::Fence fence; + + void AddWait(vk::Semaphore semaphore, u64 tick = 1) { + wait_semas.emplace_back(semaphore); + wait_ticks.emplace_back(tick); + } + + void AddSignal(vk::Semaphore semaphore, u64 tick = 1) { + signal_semas.emplace_back(semaphore); + signal_ticks.emplace_back(tick); + } + + void AddSignal(vk::Fence fence) { + this->fence = fence; + } +}; + class Scheduler { public: explicit Scheduler(const Instance& instance); ~Scheduler(); - /// Sends the current execution context to the GPU. - void Flush(vk::Semaphore signal = nullptr, vk::Semaphore wait = nullptr); + /// Sends the current execution context to the GPU + /// and increments the scheduler timeline semaphore. + void Flush(SubmitInfo& info); /// Sends the current execution context to the GPU and waits for it to complete. - void Finish(vk::Semaphore signal = nullptr, vk::Semaphore wait = nullptr); + void Finish(); /// Waits for the given tick to trigger on the GPU. void Wait(u64 tick); @@ -76,12 +99,12 @@ public: pending_ops.emplace(func, CurrentTick()); } - std::mutex submit_mutex; + static std::mutex submit_mutex; private: void AllocateWorkerCommandBuffers(); - void SubmitExecution(vk::Semaphore signal_semaphore, vk::Semaphore wait_semaphore); + void SubmitExecution(SubmitInfo& info); private: const Instance& instance; diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 7fffdeb2..20c99e30 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -55,7 +55,7 @@ void Swapchain::Create(u32 width_, u32 height_, vk::SurfaceKHR surface_) { .pQueueFamilyIndices = queue_family_indices.data(), .preTransform = transform, .compositeAlpha = composite_alpha, - .presentMode = vk::PresentModeKHR::eFifo, + .presentMode = vk::PresentModeKHR::eMailbox, .clipped = true, .oldSwapchain = nullptr, }; diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index e097ba3e..ace2e4d5 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -231,7 +231,7 @@ static constexpr vk::BufferUsageFlags StagingFlags = vk::BufferUsageFlagBits::eT TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler) : instance{instance}, scheduler{scheduler}, - staging{instance, scheduler, StagingFlags, 128_MB, Vulkan::BufferType::Upload} { + staging{instance, scheduler, StagingFlags, 256_MB, Vulkan::BufferType::Upload} { static const std::array detiler_shaders{ HostShaders::DETILE_M8X1_COMP, HostShaders::DETILE_M8X2_COMP, From 30198d5ffcd1495a81ad0407dbc5c67058de5ef7 Mon Sep 17 00:00:00 2001 From: psucien <168137814+psucien@users.noreply.github.com> Date: Sun, 28 Jul 2024 17:20:42 +0200 Subject: [PATCH 18/44] Surface management rework (2/3) (#329) * texture_cache: interface refactoring * a bit of fixes and improvements * texture_cache: macro tile extents for bpp 128 * texture_cache: detiler: prefer host memory for large buffers upload --- src/video_core/amdgpu/liverpool.h | 6 +- src/video_core/host_shaders/detile_m32x1.comp | 26 ++- src/video_core/host_shaders/detile_m32x2.comp | 32 ++- src/video_core/host_shaders/detile_m32x4.comp | 38 ++-- src/video_core/host_shaders/detile_m8x1.comp | 26 ++- src/video_core/host_shaders/detile_m8x2.comp | 26 +-- .../renderer_vulkan/liverpool_to_vk.cpp | 4 + .../renderer_vulkan/vk_compute_pipeline.cpp | 4 +- .../renderer_vulkan/vk_graphics_pipeline.cpp | 4 +- .../renderer_vulkan/vk_pipeline_cache.cpp | 2 +- .../renderer_vulkan/vk_platform.cpp | 1 + .../renderer_vulkan/vk_rasterizer.cpp | 11 +- src/video_core/texture_cache/image.cpp | 20 +- src/video_core/texture_cache/image.h | 1 - src/video_core/texture_cache/image_info.cpp | 156 +++++++------ src/video_core/texture_cache/image_info.h | 23 +- src/video_core/texture_cache/image_view.cpp | 38 +++- src/video_core/texture_cache/image_view.h | 9 +- .../texture_cache/texture_cache.cpp | 210 +++++++++--------- src/video_core/texture_cache/texture_cache.h | 16 +- src/video_core/texture_cache/tile_manager.cpp | 138 +++++++++--- src/video_core/texture_cache/tile_manager.h | 9 +- 22 files changed, 478 insertions(+), 322 deletions(-) diff --git a/src/video_core/amdgpu/liverpool.h b/src/video_core/amdgpu/liverpool.h index 8553bc92..db2ee91c 100644 --- a/src/video_core/amdgpu/liverpool.h +++ b/src/video_core/amdgpu/liverpool.h @@ -377,9 +377,13 @@ struct Liverpool { return 1u << z_info.num_samples; // spec doesn't say it is a log2 } + u32 NumBits() const { + return z_info.format == ZFormat::Z32Float ? 32 : 16; + } + size_t GetDepthSliceSize() const { ASSERT(z_info.format != ZFormat::Invalid); - const auto bpe = z_info.format == ZFormat::Z32Float ? 4 : 2; + const auto bpe = NumBits() >> 3; // in bytes return (depth_slice.tile_max + 1) * 64 * bpe * NumSamples(); } }; diff --git a/src/video_core/host_shaders/detile_m32x1.comp b/src/video_core/host_shaders/detile_m32x1.comp index f3e84c75..fecea109 100644 --- a/src/video_core/host_shaders/detile_m32x1.comp +++ b/src/video_core/host_shaders/detile_m32x1.comp @@ -8,10 +8,14 @@ layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(std430, binding = 0) buffer input_buf { uint in_data[]; }; -layout(r32ui, binding = 1) uniform writeonly uimage2D output_img; +layout(std430, binding = 1) buffer output_buf { + uint out_data[]; +}; layout(push_constant) uniform image_info { + uint num_levels; uint pitch; + uint sizes[14]; } info; // Inverse morton LUT, small enough to fit into K$ @@ -31,20 +35,22 @@ uint rmort[16] = { #define TEXELS_PER_ELEMENT (1) void main() { + uint tile_base = gl_GlobalInvocationID.x - gl_LocalInvocationID.x; // WG*16 + uint p0 = in_data[gl_GlobalInvocationID.x]; uint bit_ofs = 8 * (gl_LocalInvocationID.x % 4); uint packed_pos = rmort[gl_LocalInvocationID.x >> 2] >> bit_ofs; uint col = bitfieldExtract(packed_pos, 4, 4); uint row = bitfieldExtract(packed_pos, 0, 4); - uint p0 = in_data[gl_GlobalInvocationID.x]; + uint mip = 0; + for (int m = 0; m < info.num_levels; ++m) { + mip += (gl_GlobalInvocationID.x * 4) >= info.sizes[m] ? 1 : 0; + } - uint tiles_per_pitch = info.pitch >> 3; // log2(MICRO_TILE_DIM) + uint tiles_per_pitch = max((info.pitch >> mip) / MICRO_TILE_DIM, 1); uint target_tile_x = gl_WorkGroupID.x % tiles_per_pitch; uint target_tile_y = gl_WorkGroupID.x / tiles_per_pitch; - - uint dw_ofs_x = target_tile_x * MICRO_TILE_DIM + TEXELS_PER_ELEMENT * col; - uint dw_ofs_y = target_tile_y * MICRO_TILE_DIM + row; - - ivec2 img_pos = ivec2(dw_ofs_x, dw_ofs_y); - imageStore(output_img, img_pos, uvec4(p0, 0, 0, 0)); -} \ No newline at end of file + uint dw_ofs_x = target_tile_x * MICRO_TILE_DIM + col; + uint dw_ofs_y = (target_tile_y * tiles_per_pitch * 64) + row * tiles_per_pitch * MICRO_TILE_DIM; + out_data[dw_ofs_x + dw_ofs_y] = p0; +} diff --git a/src/video_core/host_shaders/detile_m32x2.comp b/src/video_core/host_shaders/detile_m32x2.comp index 2853f8b7..c2caa62c 100644 --- a/src/video_core/host_shaders/detile_m32x2.comp +++ b/src/video_core/host_shaders/detile_m32x2.comp @@ -8,10 +8,14 @@ layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(std430, binding = 0) buffer input_buf { uint in_data[]; }; -layout(rg32ui, binding = 1) uniform writeonly uimage2D output_img; +layout(std430, binding = 1) buffer output_buf { + uint out_data[]; +}; layout(push_constant) uniform image_info { + uint num_levels; uint pitch; + uint sizes[14]; } info; // Inverse morton LUT, small enough to fit into K$ @@ -30,19 +34,25 @@ uint rmort[16] = { #define MICRO_TILE_DIM (8) void main() { + uint block_ofs = 2 * gl_GlobalInvocationID.x; + uint p0 = in_data[block_ofs + 0]; + uint p1 = in_data[block_ofs + 1]; + uint bit_ofs = 8 * (gl_LocalInvocationID.x % 4); uint packed_pos = rmort[gl_LocalInvocationID.x >> 2] >> bit_ofs; uint col = bitfieldExtract(packed_pos, 4, 4); uint row = bitfieldExtract(packed_pos, 0, 4); - uint block_ofs = 2 * gl_GlobalInvocationID.x; - uint p0 = in_data[block_ofs + 0]; - uint p1 = in_data[block_ofs + 1]; + uint mip = 0; + for (int m = 0; m < info.num_levels; ++m) { + mip += (gl_GlobalInvocationID.x * 8) >= info.sizes[m] ? 1 : 0; + } - uint tiles_per_pitch = (info.pitch >> 3) >> 2; // log2(MICRO_TILE_DIM) / 4 - ivec2 img_pos = MICRO_TILE_DIM * ivec2( - gl_WorkGroupID.x % tiles_per_pitch, - gl_WorkGroupID.x / tiles_per_pitch - ); - imageStore(output_img, img_pos + ivec2(col, row), uvec4(p0, p1, 0, 0)); -} \ No newline at end of file + uint tiles_per_pitch = max((info.pitch >> mip) / MICRO_TILE_DIM, 1) * 2; + uint target_tile_x = 2 * gl_WorkGroupID.x % tiles_per_pitch; + uint target_tile_y = 2 * gl_WorkGroupID.x / tiles_per_pitch; + uint dw_ofs_x = target_tile_x * MICRO_TILE_DIM + col * 2; + uint dw_ofs_y = (target_tile_y * tiles_per_pitch * 64) + row * tiles_per_pitch * MICRO_TILE_DIM; + out_data[dw_ofs_x + dw_ofs_y] = p0; + out_data[dw_ofs_x + dw_ofs_y + 1] = p1; +} diff --git a/src/video_core/host_shaders/detile_m32x4.comp b/src/video_core/host_shaders/detile_m32x4.comp index 64f34e6f..11353870 100644 --- a/src/video_core/host_shaders/detile_m32x4.comp +++ b/src/video_core/host_shaders/detile_m32x4.comp @@ -8,10 +8,14 @@ layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; layout(std430, binding = 0) buffer input_buf { uint in_data[]; }; -layout(rgba32ui, binding = 1) uniform writeonly uimage2D output_img; +layout(std430, binding = 1) buffer output_buf { + uint out_data[]; +}; layout(push_constant) uniform image_info { + uint num_levels; uint pitch; + uint sizes[14]; } info; // Inverse morton LUT, small enough to fit into K$ @@ -30,21 +34,29 @@ uint rmort[16] = { #define MICRO_TILE_DIM (8) void main() { - uint bit_ofs = 8 * (gl_LocalInvocationID.x % 4); - uint packed_pos = rmort[gl_LocalInvocationID.x >> 2] >> bit_ofs; - uint col = bitfieldExtract(packed_pos, 4, 4); - uint row = bitfieldExtract(packed_pos, 0, 4); - uint block_ofs = 4 * gl_GlobalInvocationID.x; uint p0 = in_data[block_ofs + 0]; uint p1 = in_data[block_ofs + 1]; uint p2 = in_data[block_ofs + 2]; uint p3 = in_data[block_ofs + 3]; - uint tiles_per_pitch = (info.pitch >> 3) >> 2; // log2(MICRO_TILE_DIM) / 4 - ivec2 img_pos = MICRO_TILE_DIM * ivec2( - gl_WorkGroupID.x % tiles_per_pitch, - gl_WorkGroupID.x / tiles_per_pitch - ); - imageStore(output_img, img_pos + ivec2(col, row), uvec4(p0, p1, p2, p3)); -} \ No newline at end of file + uint bit_ofs = 8 * (gl_LocalInvocationID.x % 4); + uint packed_pos = rmort[gl_LocalInvocationID.x >> 2] >> bit_ofs; + uint col = bitfieldExtract(packed_pos, 4, 4); + uint row = bitfieldExtract(packed_pos, 0, 4); + + uint mip = 0; + for (int m = 0; m < info.num_levels; ++m) { + mip += (gl_GlobalInvocationID.x * 16) >= info.sizes[m] ? 1 : 0; + } + + uint tiles_per_pitch = max(((info.pitch >> mip) / MICRO_TILE_DIM), 1u) * 4; + uint target_tile_x = 4 * gl_WorkGroupID.x % tiles_per_pitch; + uint target_tile_y = 4 * gl_WorkGroupID.x / tiles_per_pitch; + uint dw_ofs_x = (target_tile_x * MICRO_TILE_DIM) + 4 * col; + uint dw_ofs_y = ((target_tile_y * tiles_per_pitch) * 64u) + ((row * tiles_per_pitch) * MICRO_TILE_DIM); + out_data[dw_ofs_x + dw_ofs_y] = p0; + out_data[dw_ofs_x + dw_ofs_y + 1] = p1; + out_data[dw_ofs_x + dw_ofs_y + 2] = p2; + out_data[dw_ofs_x + dw_ofs_y + 3] = p3; +} diff --git a/src/video_core/host_shaders/detile_m8x1.comp b/src/video_core/host_shaders/detile_m8x1.comp index b4d920e6..5ec48fae 100644 --- a/src/video_core/host_shaders/detile_m8x1.comp +++ b/src/video_core/host_shaders/detile_m8x1.comp @@ -11,10 +11,14 @@ layout (local_size_x = 16, local_size_y = 1, local_size_z = 1) in; layout(std430, binding = 0) buffer input_buf { uint in_data[]; }; -layout(r8ui, binding = 1) uniform writeonly uimage2D output_img; +layout(std430, binding = 1) buffer output_buf { + uint out_data[]; +}; layout(push_constant) uniform image_info { + uint num_levels; uint pitch; + uint sizes[14]; } info; #define MICRO_TILE_DIM 8 @@ -32,17 +36,15 @@ void main() { uint row = (gl_LocalInvocationID.x % TEXELS_PER_ELEMENT) + TEXELS_PER_ELEMENT * (gl_LocalInvocationID.x >> 3); - uint tiles_per_pitch = info.pitch >> 3; // log2(MICRO_TILE_DIM) + uint mip = 0; + for (int m = 0; m < info.num_levels; ++m) { + mip += (gl_GlobalInvocationID.x * 4) >= info.sizes[m] ? 1 : 0; + } + + uint tiles_per_pitch = max((info.pitch >> mip) / 8, 1); uint target_tile_x = gl_WorkGroupID.x % tiles_per_pitch; uint target_tile_y = gl_WorkGroupID.x / tiles_per_pitch; - uint dw_ofs_x = target_tile_x * MICRO_TILE_DIM + TEXELS_PER_ELEMENT * col; - uint dw_ofs_y = target_tile_y * MICRO_TILE_DIM + row; - - ivec2 img_pos = ivec2(dw_ofs_x, dw_ofs_y); - - #pragma unroll - for (int ofs = 0; ofs < TEXELS_PER_ELEMENT; ++ofs) { - imageStore(output_img, img_pos + ivec2(ofs, 0), uvec4(dst_tx & 0xff)); - dst_tx >>= 8; - } + uint dw_ofs_x = target_tile_x * 2 + col; // 2 = uints + uint dw_ofs_y = (target_tile_y * MICRO_TILE_DIM + row) * tiles_per_pitch * 2; // 2 = uints + out_data[dw_ofs_x + dw_ofs_y] = dst_tx; } \ No newline at end of file diff --git a/src/video_core/host_shaders/detile_m8x2.comp b/src/video_core/host_shaders/detile_m8x2.comp index 1cebc12b..d27bc6e2 100644 --- a/src/video_core/host_shaders/detile_m8x2.comp +++ b/src/video_core/host_shaders/detile_m8x2.comp @@ -10,10 +10,14 @@ layout (local_size_x = 32, local_size_y = 1, local_size_z = 1) in; layout(std430, binding = 0) buffer input_buf { uint in_data[]; }; -layout(rg8ui, binding = 1) uniform writeonly uimage2D output_img; +layout(std430, binding = 1) buffer output_buf { + uint out_data[]; +}; layout(push_constant) uniform image_info { + uint num_levels; uint pitch; + uint sizes[14]; } info; #define MICRO_TILE_DIM 8 @@ -44,18 +48,14 @@ void main() { uint col = bitfieldExtract(packed_pos, 4, 4); uint row = bitfieldExtract(packed_pos, 0, 4); - uint tiles_per_pitch = info.pitch >> 3; // log2(MICRO_TILE_DIM) + uint mip = 0u; + for (int m = 0; m < info.num_levels; ++m) { + mip += (gl_GlobalInvocationID.x * 4) >= info.sizes[m] ? 1 : 0; + } + uint tiles_per_pitch = max(((info.pitch >> mip) / 8u), 1u); uint target_tile_x = gl_WorkGroupID.x % tiles_per_pitch; uint target_tile_y = gl_WorkGroupID.x / tiles_per_pitch; - uint dw_ofs_x = target_tile_x * MICRO_TILE_DIM + col; - uint dw_ofs_y = target_tile_y * MICRO_TILE_DIM + row; - - ivec2 img_pos = ivec2(dw_ofs_x, dw_ofs_y); - - #pragma unroll - for (int ofs = 0; ofs < TEXELS_PER_ELEMENT; ++ofs) { - uint p0 = (p[ofs] >> 8) & 0xff; - uint p1 = p[ofs] & 0xff; - imageStore(output_img, img_pos + ivec2(ofs, 0), uvec4(p1, p0, 0, 0)); - } + uint dw_ofs_x = target_tile_x * 8 + col; + uint dw_ofs_y = (target_tile_y * tiles_per_pitch * 64) + row * tiles_per_pitch * 8; + out_data[(dw_ofs_x + dw_ofs_y) / 2] = src_tx; } diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index 90d97404..fc7943e6 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -392,6 +392,10 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Float) { return vk::Format::eR16G16Sfloat; } + if (data_format == AmdGpu::DataFormat::Format16_16 && + num_format == AmdGpu::NumberFormat::Unorm) { + return vk::Format::eR16G16Unorm; + } if (data_format == AmdGpu::DataFormat::Format10_11_11 && num_format == AmdGpu::NumberFormat::Float) { return vk::Format::eB10G11R11UfloatPack32; diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp index 954adf44..51bb7f83 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp @@ -128,7 +128,9 @@ bool ComputePipeline::BindResources(Core::MemoryManager* memory, StreamBuffer& s for (const auto& image_desc : info.images) { const auto tsharp = info.ReadUd(image_desc.sgpr_base, image_desc.dword_offset); - const auto& image_view = texture_cache.FindTexture(tsharp, image_desc.is_storage); + VideoCore::ImageInfo image_info{tsharp}; + VideoCore::ImageViewInfo view_info{tsharp, image_desc.is_storage}; + const auto& image_view = texture_cache.FindTexture(image_info, view_info); const auto& image = texture_cache.GetImage(image_view.image_id); image_infos.emplace_back(VK_NULL_HANDLE, *image_view.image_view, image.layout); set_writes.push_back({ diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index f119bc77..eb552268 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -366,7 +366,9 @@ void GraphicsPipeline::BindResources(Core::MemoryManager* memory, StreamBuffer& for (const auto& image_desc : stage.images) { const auto& tsharp = tsharps.emplace_back( stage.ReadUd(image_desc.sgpr_base, image_desc.dword_offset)); - const auto& image_view = texture_cache.FindTexture(tsharp, image_desc.is_storage); + VideoCore::ImageInfo image_info{tsharp}; + VideoCore::ImageViewInfo view_info{tsharp, image_desc.is_storage}; + const auto& image_view = texture_cache.FindTexture(image_info, view_info); const auto& image = texture_cache.GetImage(image_view.image_id); image_infos.emplace_back(VK_NULL_HANDLE, *image_view.image_view, image.layout); set_writes.push_back({ diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 7f0b74ab..67994485 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -191,7 +191,7 @@ void PipelineCache::RefreshGraphicsKey() { LiverpoolToVK::SurfaceFormat(col_buf.info.format, col_buf.NumFormat()); const auto is_vo_surface = renderer->IsVideoOutSurface(col_buf); key.color_formats[remapped_cb] = LiverpoolToVK::AdjustColorBufferFormat( - base_format, col_buf.info.comp_swap.Value(), is_vo_surface); + base_format, col_buf.info.comp_swap.Value(), false /*is_vo_surface*/); key.blend_controls[remapped_cb] = regs.blend_control[cb]; key.blend_controls[remapped_cb].enable.Assign(key.blend_controls[remapped_cb].enable && !col_buf.info.blend_bypass); diff --git a/src/video_core/renderer_vulkan/vk_platform.cpp b/src/video_core/renderer_vulkan/vk_platform.cpp index 1499d877..0915514b 100644 --- a/src/video_core/renderer_vulkan/vk_platform.cpp +++ b/src/video_core/renderer_vulkan/vk_platform.cpp @@ -32,6 +32,7 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL DebugUtilsCallback( switch (static_cast(callback_data->messageIdNumber)) { case 0x609a13b: // Vertex attribute at location not consumed by shader case 0xc81ad50e: + case 0x92d66fc1: // `pMultisampleState is NULL` for depth only passes (confirmed VL error) return VK_FALSE; default: break; diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 67a88c47..c64f6089 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -120,7 +120,9 @@ void Rasterizer::BeginRendering() { } const auto& hint = liverpool->last_cb_extent[col_buf_id]; - const auto& image_view = texture_cache.FindRenderTarget(col_buf, hint); + VideoCore::ImageInfo image_info{col_buf, hint}; + VideoCore::ImageViewInfo view_info{col_buf, false /*!!image.info.usage.vo_buffer*/}; + const auto& image_view = texture_cache.FindRenderTarget(image_info, view_info); const auto& image = texture_cache.GetImage(image_view.image_id); state.width = std::min(state.width, image.info.size.width); state.height = std::min(state.height, image.info.size.height); @@ -143,9 +145,10 @@ void Rasterizer::BeginRendering() { const bool is_clear = regs.depth_render_control.depth_clear_enable || texture_cache.IsMetaCleared(htile_address); const auto& hint = liverpool->last_db_extent; - const auto& image_view = texture_cache.FindDepthTarget( - regs.depth_buffer, regs.depth_view.NumSlices(), htile_address, hint, - regs.depth_control.depth_write_enable); + VideoCore::ImageInfo image_info{regs.depth_buffer, regs.depth_view.NumSlices(), + htile_address, hint}; + VideoCore::ImageViewInfo view_info{regs.depth_buffer, regs.depth_view, regs.depth_control}; + const auto& image_view = texture_cache.FindDepthTarget(image_info, view_info); const auto& image = texture_cache.GetImage(image_view.image_id); state.width = std::min(state.width, image.info.size.width); state.height = std::min(state.height, image.info.size.height); diff --git a/src/video_core/texture_cache/image.cpp b/src/video_core/texture_cache/image.cpp index b4b3f48a..f7aef847 100644 --- a/src/video_core/texture_cache/image.cpp +++ b/src/video_core/texture_cache/image.cpp @@ -117,18 +117,15 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, image{instance->GetDevice(), instance->GetAllocator()}, cpu_addr{info.guest_address}, cpu_addr_end{cpu_addr + info.guest_size_bytes} { ASSERT(info.pixel_format != vk::Format::eUndefined); + // Here we force `eExtendedUsage` as don't know all image usage cases beforehand. In normal case + // the texture cache should re-create the resource with the usage requested vk::ImageCreateFlags flags{vk::ImageCreateFlagBits::eMutableFormat | vk::ImageCreateFlagBits::eExtendedUsage}; - if (info.type == vk::ImageType::e2D && info.resources.layers >= 6 && - info.size.width == info.size.height) { + if (info.props.is_cube) { flags |= vk::ImageCreateFlagBits::eCubeCompatible; - } - if (info.type == vk::ImageType::e3D) { + } else if (info.props.is_volume) { flags |= vk::ImageCreateFlagBits::e2DArrayCompatible; } - if (info.IsBlockCoded()) { - flags |= vk::ImageCreateFlagBits::eBlockTexelViewCompatible; - } usage = ImageUsageFlags(info); @@ -157,15 +154,6 @@ Image::Image(const Vulkan::Instance& instance_, Vulkan::Scheduler& scheduler_, }; image.Create(image_ci); - - // Create a special view for detiler - if (info.is_tiled) { - ImageViewInfo view_info; - view_info.format = DemoteImageFormatForDetiling(info.pixel_format); - view_for_detiler.emplace(*instance, view_info, *this, ImageId{}); - } - - Transit(vk::ImageLayout::eGeneral, vk::AccessFlagBits::eNone); } void Image::Transit(vk::ImageLayout dst_layout, vk::Flags dst_mask, diff --git a/src/video_core/texture_cache/image.h b/src/video_core/texture_cache/image.h index 97ceaa09..b18f1002 100644 --- a/src/video_core/texture_cache/image.h +++ b/src/video_core/texture_cache/image.h @@ -105,7 +105,6 @@ struct Image { VAddr cpu_addr_end = 0; std::vector image_view_infos; std::vector image_view_ids; - std::optional view_for_detiler; // Resource state tracking vk::ImageUsageFlags usage; diff --git a/src/video_core/texture_cache/image_info.cpp b/src/video_core/texture_cache/image_info.cpp index 41ad0938..e01a61ae 100644 --- a/src/video_core/texture_cache/image_info.cpp +++ b/src/video_core/texture_cache/image_info.cpp @@ -47,33 +47,33 @@ static vk::ImageType ConvertImageType(AmdGpu::ImageType type) noexcept { // clang-format off // The table of macro tiles parameters for given tiling index (row) and bpp (column) static constexpr std::array macro_tile_extents{ - std::pair{256u, 128u}, std::pair{256u, 128u}, std::pair{256u, 128u}, std::pair{256u, 128u}, // 00 - std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, // 01 - std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 02 - std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 03 - std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 04 - std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 05 - std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, // 06 - std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, // 07 - std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 08 - std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 09 - std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 0A - std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, // 0B - std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, // 0C - std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 0D - std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 0E - std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 0F - std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, // 10 - std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, // 11 - std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, // 12 - std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 13 - std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 14 - std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 15 - std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 16 - std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 17 - std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 18 - std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 19 - std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 1A + std::pair{256u, 128u}, std::pair{256u, 128u}, std::pair{256u, 128u}, std::pair{256u, 128u}, std::pair{256u, 128u}, // 00 + std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, // 01 + std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 02 + std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 03 + std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 04 + std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 05 + std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, std::pair{128u, 128u}, // 06 + std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 07 + std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 08 + std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 09 + std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 0A + std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 0B + std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 0C + std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 0D + std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 0E + std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 0F + std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 10 + std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, // 11 + std::pair{256u, 256u}, std::pair{256u, 128u}, std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{128u, 64u}, // 12 + std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, std::pair{0u, 0u}, // 13 + std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 14 + std::pair{128u, 64u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 15 + std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 16 + std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 17 + std::pair{128u, 128u}, std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{128u, 64u}, // 18 + std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 19 + std::pair{128u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, std::pair{64u, 64u}, // 1A }; // clang-format on @@ -82,62 +82,65 @@ static constexpr auto hw_pipe_interleave = 256u; static constexpr std::pair GetMacroTileExtents(u32 tiling_idx, u32 bpp, u32 num_samples) { ASSERT(num_samples == 1); - const auto row = tiling_idx * 4; - const auto column = std::bit_width(bpp) - 4; // bpps are 8, 16, 32, 64 + const auto row = tiling_idx * 5; + const auto column = std::bit_width(bpp) - 4; // bpps are 8, 16, 32, 64, 128 return macro_tile_extents[row + column]; } -static constexpr size_t ImageSizeLinearAligned(u32 pitch, u32 height, u32 bpp, u32 num_samples) { +static constexpr std::pair ImageSizeLinearAligned(u32 pitch, u32 height, u32 bpp, + u32 num_samples) { const auto pitch_align = std::max(8u, 64u / ((bpp + 7) / 8)); auto pitch_aligned = (pitch + pitch_align - 1) & ~(pitch_align - 1); const auto height_aligned = height; - size_t log_sz = 1; - const auto slice_align = std::max(64u, hw_pipe_interleave / (bpp + 7) / 8); + size_t log_sz = pitch_aligned * height_aligned * num_samples; + const auto slice_align = std::max(64u, 256u / ((bpp + 7) / 8)); while (log_sz % slice_align) { - log_sz = pitch_aligned * height_aligned * num_samples; pitch_aligned += pitch_align; + log_sz = pitch_aligned * height_aligned * num_samples; } - return (log_sz * bpp + 7) / 8; + return {pitch_aligned, (log_sz * bpp + 7) / 8}; } -static constexpr size_t ImageSizeMicroTiled(u32 pitch, u32 height, u32 bpp, u32 num_samples) { +static constexpr std::pair ImageSizeMicroTiled(u32 pitch, u32 height, u32 bpp, + u32 num_samples) { const auto& [pitch_align, height_align] = micro_tile_extent; auto pitch_aligned = (pitch + pitch_align - 1) & ~(pitch_align - 1); const auto height_aligned = (height + height_align - 1) & ~(height_align - 1); - size_t log_sz = 1; + size_t log_sz = (pitch_aligned * height_aligned * bpp * num_samples + 7) / 8; while (log_sz % 256) { - log_sz = (pitch_aligned * height_aligned * bpp * num_samples + 7) / 8; pitch_aligned += 8; + log_sz = (pitch_aligned * height_aligned * bpp * num_samples + 7) / 8; } - return log_sz; + return {pitch_aligned, log_sz}; } -static constexpr size_t ImageSizeMacroTiled(u32 pitch, u32 height, u32 bpp, u32 num_samples, - u32 tiling_idx) { +static constexpr std::pair ImageSizeMacroTiled(u32 pitch, u32 height, u32 bpp, + u32 num_samples, u32 tiling_idx) { const auto& [pitch_align, height_align] = GetMacroTileExtents(tiling_idx, bpp, num_samples); ASSERT(pitch_align != 0 && height_align != 0); const auto pitch_aligned = (pitch + pitch_align - 1) & ~(pitch_align - 1); const auto height_aligned = (height + height_align - 1) & ~(height_align - 1); - return (pitch_aligned * height_aligned * bpp * num_samples + 7) / 8; + const auto log_sz = pitch_aligned * height_aligned * num_samples; + return {pitch_aligned, (log_sz * bpp + 7) / 8}; } ImageInfo::ImageInfo(const Libraries::VideoOut::BufferAttributeGroup& group, VAddr cpu_address) noexcept { const auto& attrib = group.attrib; - is_tiled = attrib.tiling_mode == TilingMode::Tile; - tiling_mode = - is_tiled ? AmdGpu::TilingMode::Display_MacroTiled : AmdGpu::TilingMode::Display_Linear; + props.is_tiled = attrib.tiling_mode == TilingMode::Tile; + tiling_mode = props.is_tiled ? AmdGpu::TilingMode::Display_MacroTiled + : AmdGpu::TilingMode::Display_Linear; pixel_format = ConvertPixelFormat(attrib.pixel_format); type = vk::ImageType::e2D; size.width = attrib.width; size.height = attrib.height; pitch = attrib.tiling_mode == TilingMode::Linear ? size.width : (size.width + 127) & (~127); usage.vo_buffer = true; - const bool is_32bpp = attrib.pixel_format != VideoOutFormat::A16R16G16B16Float; - ASSERT(is_32bpp); + num_bits = attrib.pixel_format != VideoOutFormat::A16R16G16B16Float ? 32 : 64; + ASSERT(num_bits == 32); guest_address = cpu_address; - if (!is_tiled) { + if (!props.is_tiled) { guest_size_bytes = pitch * size.height * 4; } else { if (Config::isNeoMode()) { @@ -146,15 +149,16 @@ ImageInfo::ImageInfo(const Libraries::VideoOut::BufferAttributeGroup& group, guest_size_bytes = pitch * ((size.height + 63) & (~63)) * 4; } } - mips_layout.emplace_back(0, guest_size_bytes); + mips_layout.emplace_back(guest_size_bytes, pitch, 0); } ImageInfo::ImageInfo(const AmdGpu::Liverpool::ColorBuffer& buffer, const AmdGpu::Liverpool::CbDbExtent& hint /*= {}*/) noexcept { - is_tiled = buffer.IsTiled(); + props.is_tiled = buffer.IsTiled(); tiling_mode = buffer.GetTilingMode(); pixel_format = LiverpoolToVK::SurfaceFormat(buffer.info.format, buffer.NumFormat()); num_samples = 1 << buffer.attrib.num_fragments_log2; + num_bits = NumBits(buffer.info.format); type = vk::ImageType::e2D; size.width = hint.Valid() ? hint.width : buffer.Pitch(); size.height = hint.Valid() ? hint.height : buffer.Height(); @@ -168,15 +172,16 @@ ImageInfo::ImageInfo(const AmdGpu::Liverpool::ColorBuffer& buffer, guest_address = buffer.Address(); const auto color_slice_sz = buffer.GetColorSliceSize(); guest_size_bytes = color_slice_sz * buffer.NumSlices(); - mips_layout.emplace_back(0, color_slice_sz); + mips_layout.emplace_back(color_slice_sz, pitch, 0); } ImageInfo::ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slices, VAddr htile_address, const AmdGpu::Liverpool::CbDbExtent& hint) noexcept { - is_tiled = false; + props.is_tiled = false; pixel_format = LiverpoolToVK::DepthFormat(buffer.z_info.format, buffer.stencil_info.format); type = vk::ImageType::e2D; num_samples = 1 << buffer.z_info.num_samples; // spec doesn't say it is a log2 + num_bits = buffer.NumBits(); size.width = hint.Valid() ? hint.width : buffer.Pitch(); size.height = hint.Valid() ? hint.height : buffer.Height(); size.depth = 1; @@ -188,37 +193,38 @@ ImageInfo::ImageInfo(const AmdGpu::Liverpool::DepthBuffer& buffer, u32 num_slice guest_address = buffer.Address(); const auto depth_slice_sz = buffer.GetDepthSliceSize(); guest_size_bytes = depth_slice_sz * num_slices; - mips_layout.emplace_back(0, depth_slice_sz); + mips_layout.emplace_back(depth_slice_sz, pitch, 0); } ImageInfo::ImageInfo(const AmdGpu::Image& image) noexcept { - is_tiled = image.IsTiled(); tiling_mode = image.GetTilingMode(); pixel_format = LiverpoolToVK::SurfaceFormat(image.GetDataFmt(), image.GetNumberFmt()); type = ConvertImageType(image.GetType()); - is_cube = image.GetType() == AmdGpu::ImageType::Cube; - is_volume = image.GetType() == AmdGpu::ImageType::Color3D; + props.is_tiled = image.IsTiled(); + props.is_cube = image.GetType() == AmdGpu::ImageType::Cube; + props.is_volume = image.GetType() == AmdGpu::ImageType::Color3D; + props.is_pow2 = image.pow2pad; + props.is_block = IsBlockCoded(); size.width = image.width + 1; size.height = image.height + 1; - size.depth = is_volume ? image.depth + 1 : 1; + size.depth = props.is_volume ? image.depth + 1 : 1; pitch = image.Pitch(); resources.levels = image.NumLevels(); resources.layers = image.NumLayers(); + num_bits = NumBits(image.GetDataFmt()); usage.texture = true; guest_address = image.Address(); mips_layout.reserve(resources.levels); - const auto num_bits = NumBits(image.GetDataFmt()); - const auto is_block = IsBlockCoded(); - const auto is_pow2 = image.pow2pad; + MipInfo mip_info{}; guest_size_bytes = 0; for (auto mip = 0u; mip < resources.levels; ++mip) { auto bpp = num_bits; auto mip_w = pitch >> mip; auto mip_h = size.height >> mip; - if (is_block) { + if (props.is_block) { mip_w = (mip_w + 3) / 4; mip_h = (mip_h + 3) / 4; bpp *= 16; @@ -227,40 +233,48 @@ ImageInfo::ImageInfo(const AmdGpu::Image& image) noexcept { mip_h = std::max(mip_h, 1u); auto mip_d = std::max(size.depth >> mip, 1u); - if (is_pow2) { + if (props.is_pow2) { mip_w = std::bit_ceil(mip_w); mip_h = std::bit_ceil(mip_h); mip_d = std::bit_ceil(mip_d); } - size_t mip_size = 0; switch (tiling_mode) { case AmdGpu::TilingMode::Display_Linear: { - ASSERT(!is_cube); - mip_size = ImageSizeLinearAligned(mip_w, mip_h, bpp, num_samples); + ASSERT(!props.is_cube); + std::tie(mip_info.pitch, mip_info.size) = + ImageSizeLinearAligned(mip_w, mip_h, bpp, num_samples); + mip_info.height = mip_h; break; } case AmdGpu::TilingMode::Texture_MicroTiled: { - mip_size = ImageSizeMicroTiled(mip_w, mip_h, bpp, num_samples); + std::tie(mip_info.pitch, mip_info.size) = + ImageSizeMicroTiled(mip_w, mip_h, bpp, num_samples); + mip_info.height = std::max(mip_h, 8u); + if (props.is_block) { + mip_info.pitch = std::max(mip_info.pitch * 4, 32u); + mip_info.height = std::max(mip_info.height * 4, 32u); + } break; } case AmdGpu::TilingMode::Display_MacroTiled: case AmdGpu::TilingMode::Texture_MacroTiled: case AmdGpu::TilingMode::Depth_MacroTiled: { - ASSERT(!is_cube && !is_block); + ASSERT(!props.is_cube && !props.is_block); ASSERT(num_samples == 1); - ASSERT(num_bits <= 64); - mip_size = ImageSizeMacroTiled(mip_w, mip_h, bpp, num_samples, image.tiling_index); + std::tie(mip_info.pitch, mip_info.size) = + ImageSizeMacroTiled(mip_w, mip_h, bpp, num_samples, image.tiling_index); break; } default: { UNREACHABLE(); } } - mip_size *= mip_d; + mip_info.size *= mip_d; - mips_layout.emplace_back(guest_size_bytes, mip_size); - guest_size_bytes += mip_size; + mip_info.offset = guest_size_bytes; + mips_layout.emplace_back(mip_info); + guest_size_bytes += mip_info.size; } guest_size_bytes *= resources.layers; } diff --git a/src/video_core/texture_cache/image_info.h b/src/video_core/texture_cache/image_info.h index b98410b9..9dad0dd6 100644 --- a/src/video_core/texture_cache/image_info.h +++ b/src/video_core/texture_cache/image_info.h @@ -9,6 +9,8 @@ #include "video_core/amdgpu/liverpool.h" #include "video_core/texture_cache/types.h" +#include + namespace VideoCore { struct ImageInfo { @@ -42,18 +44,29 @@ struct ImageInfo { u32 vo_buffer : 1; } usage{}; // Usage data tracked during image lifetime - bool is_cube = false; - bool is_volume = false; - bool is_tiled = false; - bool is_read_only = false; + struct { + u32 is_cube : 1; + u32 is_volume : 1; + u32 is_tiled : 1; + u32 is_pow2 : 1; + u32 is_block : 1; + } props{}; // Surface properties with impact on various calculation factors + vk::Format pixel_format = vk::Format::eUndefined; vk::ImageType type = vk::ImageType::e1D; SubresourceExtent resources; Extent3D size{1, 1, 1}; + u32 num_bits{}; u32 num_samples = 1; u32 pitch = 0; AmdGpu::TilingMode tiling_mode{AmdGpu::TilingMode::Display_Linear}; - std::vector> mips_layout; + struct MipInfo { + u32 size; + u32 pitch; + u32 height; + u32 offset; + }; + boost::container::small_vector mips_layout; VAddr guest_address{0}; u32 guest_size_bytes{0}; }; diff --git a/src/video_core/texture_cache/image_view.cpp b/src/video_core/texture_cache/image_view.cpp index 8f972253..ff85a8aa 100644 --- a/src/video_core/texture_cache/image_view.cpp +++ b/src/video_core/texture_cache/image_view.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include "common/logging/log.h" #include "video_core/renderer_vulkan/liverpool_to_vk.h" #include "video_core/renderer_vulkan/vk_instance.h" #include "video_core/texture_cache/image.h" @@ -50,15 +51,18 @@ ImageViewInfo::ImageViewInfo(const AmdGpu::Image& image, bool is_storage) noexce : is_storage{is_storage} { type = ConvertImageViewType(image.GetType()); format = Vulkan::LiverpoolToVK::SurfaceFormat(image.GetDataFmt(), image.GetNumberFmt()); - range.base.level = static_cast(image.base_level); - range.base.layer = static_cast(image.base_array); - range.extent.levels = image.NumLevels(); - range.extent.layers = image.NumLayers(); - if (!is_storage) { - mapping.r = ConvertComponentSwizzle(image.dst_sel_x); - mapping.g = ConvertComponentSwizzle(image.dst_sel_y); - mapping.b = ConvertComponentSwizzle(image.dst_sel_z); - mapping.a = ConvertComponentSwizzle(image.dst_sel_w); + range.base.level = image.base_level; + range.base.layer = image.base_array; + range.extent.levels = image.last_level + 1; + range.extent.layers = image.last_array + 1; + mapping.r = ConvertComponentSwizzle(image.dst_sel_x); + mapping.g = ConvertComponentSwizzle(image.dst_sel_y); + mapping.b = ConvertComponentSwizzle(image.dst_sel_z); + mapping.a = ConvertComponentSwizzle(image.dst_sel_w); + // Check for unfortunate case of storage images being swizzled + if (is_storage && (mapping != vk::ComponentMapping{})) { + LOG_ERROR(Render_Vulkan, "Storage image requires swizzling"); + mapping = vk::ComponentMapping{}; } } @@ -70,6 +74,16 @@ ImageViewInfo::ImageViewInfo(const AmdGpu::Liverpool::ColorBuffer& col_buffer, base_format, col_buffer.info.comp_swap.Value(), is_vo_surface); } +ImageViewInfo::ImageViewInfo(const AmdGpu::Liverpool::DepthBuffer& depth_buffer, + AmdGpu::Liverpool::DepthView view, + AmdGpu::Liverpool::DepthControl ctl) { + format = Vulkan::LiverpoolToVK::DepthFormat(depth_buffer.z_info.format, + depth_buffer.stencil_info.format); + is_storage = ctl.depth_write_enable; + range.base.layer = view.slice_start; + range.extent.layers = view.NumSlices(); +} + ImageView::ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info_, Image& image, ImageId image_id_, std::optional usage_override /*= {}*/) : info{info_}, image_id{image_id_} { @@ -93,10 +107,10 @@ ImageView::ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info .components = instance.GetSupportedComponentSwizzle(format, info.mapping), .subresourceRange{ .aspectMask = aspect, - .baseMipLevel = 0U, - .levelCount = 1, + .baseMipLevel = info.range.base.level, + .levelCount = info.range.extent.levels - info.range.base.level, .baseArrayLayer = info_.range.base.layer, - .layerCount = image.info.IsBlockCoded() ? 1 : VK_REMAINING_ARRAY_LAYERS, + .layerCount = info.range.extent.layers - info.range.base.layer, }, }; image_view = instance.GetDevice().createImageViewUnique(image_view_ci); diff --git a/src/video_core/texture_cache/image_view.h b/src/video_core/texture_cache/image_view.h index b43f65de..590ac9be 100644 --- a/src/video_core/texture_cache/image_view.h +++ b/src/video_core/texture_cache/image_view.h @@ -18,10 +18,11 @@ class Scheduler; namespace VideoCore { struct ImageViewInfo { - explicit ImageViewInfo() = default; - explicit ImageViewInfo(const AmdGpu::Image& image, bool is_storage) noexcept; - explicit ImageViewInfo(const AmdGpu::Liverpool::ColorBuffer& col_buffer, - bool is_vo_surface) noexcept; + ImageViewInfo() = default; + ImageViewInfo(const AmdGpu::Image& image, bool is_storage) noexcept; + ImageViewInfo(const AmdGpu::Liverpool::ColorBuffer& col_buffer, bool is_vo_surface) noexcept; + ImageViewInfo(const AmdGpu::Liverpool::DepthBuffer& depth_buffer, + AmdGpu::Liverpool::DepthView view, AmdGpu::Liverpool::DepthControl ctl); vk::ImageViewType type = vk::ImageViewType::e2D; vk::Format format = vk::Format::eR8G8B8A8Unorm; diff --git a/src/video_core/texture_cache/texture_cache.cpp b/src/video_core/texture_cache/texture_cache.cpp index 55bb99cc..9131e6f1 100644 --- a/src/video_core/texture_cache/texture_cache.cpp +++ b/src/video_core/texture_cache/texture_cache.cpp @@ -152,8 +152,6 @@ ImageId TextureCache::FindImage(const ImageInfo& info, bool refresh_on_create) { image_id = image_ids[0]; } - RegisterMeta(info, image_id); - Image& image = slot_images[image_id]; if (True(image.flags & ImageFlagBits::CpuModified) && refresh_on_create) { RefreshImage(image); @@ -184,13 +182,12 @@ ImageView& TextureCache::RegisterImageView(ImageId image_id, const ImageViewInfo return slot_image_views[view_id]; } -ImageView& TextureCache::FindTexture(const AmdGpu::Image& desc, bool is_storage) { - const ImageInfo info{desc}; +ImageView& TextureCache::FindTexture(const ImageInfo& info, const ImageViewInfo& view_info) { const ImageId image_id = FindImage(info); Image& image = slot_images[image_id]; auto& usage = image.info.usage; - if (is_storage) { + if (view_info.is_storage) { image.Transit(vk::ImageLayout::eGeneral, vk::AccessFlagBits::eShaderWrite); usage.storage = true; } else { @@ -201,14 +198,36 @@ ImageView& TextureCache::FindTexture(const AmdGpu::Image& desc, bool is_storage) usage.texture = true; } - const ImageViewInfo view_info{desc, is_storage}; - return RegisterImageView(image_id, view_info); + // These changes are temporary and should be removed once texture cache will handle subresources + // merging + auto view_info_tmp = view_info; + if (view_info_tmp.range.base.level > image.info.resources.levels - 1 || + view_info_tmp.range.base.layer > image.info.resources.layers - 1 || + view_info_tmp.range.extent.levels > image.info.resources.levels || + view_info_tmp.range.extent.layers > image.info.resources.layers) { + + LOG_ERROR(Render_Vulkan, + "Subresource range ({}~{},{}~{}) exceeds base image extents ({},{})", + view_info_tmp.range.base.level, view_info_tmp.range.extent.levels, + view_info_tmp.range.base.layer, view_info_tmp.range.extent.layers, + image.info.resources.levels, image.info.resources.layers); + + view_info_tmp.range.base.level = + std::min(view_info_tmp.range.base.level, image.info.resources.levels - 1); + view_info_tmp.range.base.layer = + std::min(view_info_tmp.range.base.layer, image.info.resources.layers - 1); + view_info_tmp.range.extent.levels = + std::min(view_info_tmp.range.extent.levels, image.info.resources.levels); + view_info_tmp.range.extent.layers = + std::min(view_info_tmp.range.extent.layers, image.info.resources.layers); + } + + return RegisterImageView(image_id, view_info_tmp); } -ImageView& TextureCache::FindRenderTarget(const AmdGpu::Liverpool::ColorBuffer& buffer, - const AmdGpu::Liverpool::CbDbExtent& hint) { - const ImageInfo info{buffer, hint}; - const ImageId image_id = FindImage(info); +ImageView& TextureCache::FindRenderTarget(const ImageInfo& image_info, + const ImageViewInfo& view_info) { + const ImageId image_id = FindImage(image_info); Image& image = slot_images[image_id]; image.flags &= ~ImageFlagBits::CpuModified; @@ -216,30 +235,56 @@ ImageView& TextureCache::FindRenderTarget(const AmdGpu::Liverpool::ColorBuffer& vk::AccessFlagBits::eColorAttachmentWrite | vk::AccessFlagBits::eColorAttachmentRead); + // Register meta data for this color buffer + if (!(image.flags & ImageFlagBits::MetaRegistered)) { + if (image_info.meta_info.cmask_addr) { + surface_metas.emplace( + image_info.meta_info.cmask_addr, + MetaDataInfo{.type = MetaDataInfo::Type::CMask, .is_cleared = true}); + image.info.meta_info.cmask_addr = image_info.meta_info.cmask_addr; + image.flags |= ImageFlagBits::MetaRegistered; + } + + if (image_info.meta_info.fmask_addr) { + surface_metas.emplace( + image_info.meta_info.fmask_addr, + MetaDataInfo{.type = MetaDataInfo::Type::FMask, .is_cleared = true}); + image.info.meta_info.fmask_addr = image_info.meta_info.fmask_addr; + image.flags |= ImageFlagBits::MetaRegistered; + } + } + + // Update tracked image usage image.info.usage.render_target = true; - ImageViewInfo view_info{buffer, !!image.info.usage.vo_buffer}; return RegisterImageView(image_id, view_info); } -ImageView& TextureCache::FindDepthTarget(const AmdGpu::Liverpool::DepthBuffer& buffer, - u32 num_slices, VAddr htile_address, - const AmdGpu::Liverpool::CbDbExtent& hint, - bool write_enabled) { - const ImageInfo info{buffer, num_slices, htile_address, hint}; - const ImageId image_id = FindImage(info, false); +ImageView& TextureCache::FindDepthTarget(const ImageInfo& image_info, + const ImageViewInfo& view_info) { + const ImageId image_id = FindImage(image_info, false); Image& image = slot_images[image_id]; image.flags &= ~ImageFlagBits::CpuModified; - const auto new_layout = write_enabled ? vk::ImageLayout::eDepthStencilAttachmentOptimal - : vk::ImageLayout::eDepthStencilReadOnlyOptimal; + const auto new_layout = view_info.is_storage ? vk::ImageLayout::eDepthStencilAttachmentOptimal + : vk::ImageLayout::eDepthStencilReadOnlyOptimal; image.Transit(new_layout, vk::AccessFlagBits::eDepthStencilAttachmentWrite | vk::AccessFlagBits::eDepthStencilAttachmentRead); + // Register meta data for this depth buffer + if (!(image.flags & ImageFlagBits::MetaRegistered)) { + if (image_info.meta_info.htile_addr) { + surface_metas.emplace( + image_info.meta_info.htile_addr, + MetaDataInfo{.type = MetaDataInfo::Type::HTile, .is_cleared = true}); + image.info.meta_info.htile_addr = image_info.meta_info.htile_addr; + image.flags |= ImageFlagBits::MetaRegistered; + } + } + + // Update tracked image usage image.info.usage.depth_target = true; - ImageViewInfo view_info; - view_info.format = info.pixel_format; return RegisterImageView(image_id, view_info); } @@ -247,64 +292,56 @@ void TextureCache::RefreshImage(Image& image) { // Mark image as validated. image.flags &= ~ImageFlagBits::CpuModified; - { - if (!tile_manager.TryDetile(image)) { - // Upload data to the staging buffer. - const auto offset = staging.Copy(image.cpu_addr, image.info.guest_size_bytes, 4); - // Copy to the image. - image.Upload(staging.Handle(), offset); - } + scheduler.EndRendering(); - image.Transit(vk::ImageLayout::eGeneral, - vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eTransferRead); - return; + const auto cmdbuf = scheduler.CommandBuffer(); + image.Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits::eTransferWrite); + + vk::Buffer buffer{staging.Handle()}; + u32 offset{0}; + + auto upload_buffer = tile_manager.TryDetile(image); + if (upload_buffer) { + buffer = *upload_buffer; + } else { + // Upload data to the staging buffer. + const auto [data, offset_, _] = staging.Map(image.info.guest_size_bytes, 16); + std::memcpy(data, (void*)image.info.guest_address, image.info.guest_size_bytes); + staging.Commit(image.info.guest_size_bytes); + offset = offset_; } - ASSERT(image.info.resources.levels == image.info.mips_layout.size()); - const u8* image_data = reinterpret_cast(image.cpu_addr); - for (u32 m = 0; m < image.info.resources.levels; m++) { + const auto& num_layers = image.info.resources.layers; + const auto& num_mips = image.info.resources.levels; + ASSERT(num_mips == image.info.mips_layout.size()); + + boost::container::small_vector image_copy{}; + for (u32 m = 0; m < num_mips; m++) { const u32 width = std::max(image.info.size.width >> m, 1u); const u32 height = std::max(image.info.size.height >> m, 1u); - const u32 depth = image.info.is_volume ? std::max(image.info.size.depth >> m, 1u) : 1u; - const u32 map_size = image.info.mips_layout[m].second * image.info.resources.layers; + const u32 depth = + image.info.props.is_volume ? std::max(image.info.size.depth >> m, 1u) : 1u; + const auto& [_, mip_pitch, mip_height, mip_ofs] = image.info.mips_layout[m]; - // Upload data to the staging buffer. - const auto [data, offset, _] = staging.Map(map_size, 16); - if (image.info.is_tiled) { - ConvertTileToLinear(data, image_data, width, height, Config::isNeoMode()); - } else { - std::memcpy(data, - image_data + image.info.mips_layout[m].first * image.info.resources.layers, - map_size); - } - staging.Commit(map_size); - - // Copy to the image. - const vk::BufferImageCopy image_copy = { - .bufferOffset = offset, - .bufferRowLength = 0, - .bufferImageHeight = 0, + image_copy.push_back({ + .bufferOffset = offset + mip_ofs * num_layers, + .bufferRowLength = static_cast(mip_pitch), + .bufferImageHeight = static_cast(mip_height), .imageSubresource{ .aspectMask = vk::ImageAspectFlagBits::eColor, .mipLevel = m, .baseArrayLayer = 0, - .layerCount = u32(image.info.resources.layers), + .layerCount = num_layers, }, .imageOffset = {0, 0, 0}, .imageExtent = {width, height, depth}, - }; - - scheduler.EndRendering(); - - const auto cmdbuf = scheduler.CommandBuffer(); - image.Transit(vk::ImageLayout::eTransferDstOptimal, vk::AccessFlagBits::eTransferWrite); - - cmdbuf.copyBufferToImage(staging.Handle(), image.image, - vk::ImageLayout::eTransferDstOptimal, image_copy); - - image.Transit(vk::ImageLayout::eGeneral, - vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eTransferRead); + }); } + + cmdbuf.copyBufferToImage(buffer, image.image, vk::ImageLayout::eTransferDstOptimal, image_copy); + + image.Transit(vk::ImageLayout::eGeneral, + vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eTransferRead); } vk::Sampler TextureCache::GetSampler(const AmdGpu::Sampler& sampler) { @@ -320,47 +357,8 @@ void TextureCache::RegisterImage(ImageId image_id) { image.flags |= ImageFlagBits::Registered; ForEachPage(image.cpu_addr, image.info.guest_size_bytes, [this, image_id](u64 page) { page_table[page].push_back(image_id); }); -} -void TextureCache::RegisterMeta(const ImageInfo& info, ImageId image_id) { - Image& image = slot_images[image_id]; - - if (image.flags & ImageFlagBits::MetaRegistered) { - return; - } - - bool registered = true; - // Current resource tracking implementation allows us to detect usage of meta only in the last - // moment, so we likely will miss its first clear. To avoid this and make first frame, where - // the meta is encountered, looks correct we set its state to "cleared" at registrations time. - if (info.usage.render_target) { - if (info.meta_info.cmask_addr) { - surface_metas.emplace( - info.meta_info.cmask_addr, - MetaDataInfo{.type = MetaDataInfo::Type::CMask, .is_cleared = true}); - image.info.meta_info.cmask_addr = info.meta_info.cmask_addr; - } - - if (info.meta_info.fmask_addr) { - surface_metas.emplace( - info.meta_info.fmask_addr, - MetaDataInfo{.type = MetaDataInfo::Type::FMask, .is_cleared = true}); - image.info.meta_info.fmask_addr = info.meta_info.fmask_addr; - } - } else if (info.usage.depth_target) { - if (info.meta_info.htile_addr) { - surface_metas.emplace( - info.meta_info.htile_addr, - MetaDataInfo{.type = MetaDataInfo::Type::HTile, .is_cleared = true}); - image.info.meta_info.htile_addr = info.meta_info.htile_addr; - } - } else { - registered = false; - } - - if (registered) { - image.flags |= ImageFlagBits::MetaRegistered; - } + image.Transit(vk::ImageLayout::eGeneral, vk::AccessFlagBits::eNone); } void TextureCache::UnregisterImage(ImageId image_id) { diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 8a618983..aef33bcf 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -51,17 +51,16 @@ public: [[nodiscard]] ImageId FindImage(const ImageInfo& info, bool refresh_on_create = true); /// Retrieves an image view with the properties of the specified image descriptor. - [[nodiscard]] ImageView& FindTexture(const AmdGpu::Image& image, bool is_storage); + [[nodiscard]] ImageView& FindTexture(const ImageInfo& image_info, + const ImageViewInfo& view_info); /// Retrieves the render target with specified properties - [[nodiscard]] ImageView& FindRenderTarget(const AmdGpu::Liverpool::ColorBuffer& buffer, - const AmdGpu::Liverpool::CbDbExtent& hint); + [[nodiscard]] ImageView& FindRenderTarget(const ImageInfo& image_info, + const ImageViewInfo& view_info); /// Retrieves the depth target with specified properties - [[nodiscard]] ImageView& FindDepthTarget(const AmdGpu::Liverpool::DepthBuffer& buffer, - u32 num_slices, VAddr htile_address, - const AmdGpu::Liverpool::CbDbExtent& hint, - bool write_enabled); + [[nodiscard]] ImageView& FindDepthTarget(const ImageInfo& image_info, + const ImageViewInfo& view_info); /// Reuploads image contents. void RefreshImage(Image& image); @@ -158,9 +157,6 @@ private: /// Register image in the page table void RegisterImage(ImageId image); - /// Register metadata surfaces attached to the image - void RegisterMeta(const ImageInfo& info, ImageId image); - /// Unregister image from the page table void UnregisterImage(ImageId image); diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index ace2e4d5..4864b9db 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -16,6 +16,7 @@ #include #include +#include namespace VideoCore { @@ -176,6 +177,7 @@ vk::Format DemoteImageFormatForDetiling(vk::Format format) { return vk::Format::eR8Uint; case vk::Format::eR8G8Unorm: case vk::Format::eR16Sfloat: + case vk::Format::eR16Unorm: return vk::Format::eR8G8Uint; case vk::Format::eR8G8B8A8Srgb: case vk::Format::eB8G8R8A8Srgb: @@ -183,10 +185,13 @@ vk::Format DemoteImageFormatForDetiling(vk::Format format) { case vk::Format::eR8G8B8A8Unorm: case vk::Format::eR32Sfloat: case vk::Format::eR32Uint: + case vk::Format::eR16G16Sfloat: return vk::Format::eR32Uint; case vk::Format::eBc1RgbaUnormBlock: case vk::Format::eBc4UnormBlock: case vk::Format::eR32G32Sfloat: + case vk::Format::eR32G32Uint: + case vk::Format::eR16G16B16A16Unorm: return vk::Format::eR32G32Uint; case vk::Format::eBc2SrgbBlock: case vk::Format::eBc2UnormBlock: @@ -225,14 +230,14 @@ const DetilerContext* TileManager::GetDetiler(const Image& image) const { return nullptr; } -static constexpr vk::BufferUsageFlags StagingFlags = vk::BufferUsageFlagBits::eTransferDst | - vk::BufferUsageFlagBits::eUniformBuffer | - vk::BufferUsageFlagBits::eStorageBuffer; +struct DetilerParams { + u32 num_levels; + u32 pitch0; + u32 sizes[14]; +}; TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler) - : instance{instance}, scheduler{scheduler}, - staging{instance, scheduler, StagingFlags, 256_MB, Vulkan::BufferType::Upload} { - + : instance{instance}, scheduler{scheduler} { static const std::array detiler_shaders{ HostShaders::DETILE_M8X1_COMP, HostShaders::DETILE_M8X2_COMP, HostShaders::DETILE_M32X1_COMP, HostShaders::DETILE_M32X2_COMP, @@ -264,7 +269,7 @@ TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& sc }, { .binding = 1, - .descriptorType = vk::DescriptorType::eStorageImage, + .descriptorType = vk::DescriptorType::eStorageBuffer, .descriptorCount = 1, .stageFlags = vk::ShaderStageFlagBits::eCompute, }, @@ -281,7 +286,7 @@ TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& sc const vk::PushConstantRange push_constants = { .stageFlags = vk::ShaderStageFlagBits::eCompute, .offset = 0, - .size = sizeof(u32), + .size = sizeof(DetilerParams), }; const vk::DescriptorSetLayout set_layout = *desc_layout; @@ -312,35 +317,88 @@ TileManager::TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& sc TileManager::~TileManager() = default; -bool TileManager::TryDetile(Image& image) { - if (!image.info.is_tiled) { - return false; +TileManager::ScratchBuffer TileManager::AllocBuffer(u32 size, bool is_storage /*= false*/) { + const auto usage = vk::BufferUsageFlagBits::eStorageBuffer | + (is_storage ? vk::BufferUsageFlagBits::eTransferSrc + : vk::BufferUsageFlagBits::eTransferDst); + const vk::BufferCreateInfo buffer_ci{ + .size = size, + .usage = usage, + }; + + const bool is_large_buffer = size > 128_MB; + VmaAllocationCreateInfo alloc_info{ + .flags = !is_storage ? VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT | + VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT + : static_cast(0), + .usage = is_large_buffer ? VMA_MEMORY_USAGE_AUTO_PREFER_HOST + : VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, + .requiredFlags = !is_storage ? VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT + : static_cast(0), + }; + + VkBuffer buffer; + VmaAllocation allocation; + const auto buffer_ci_unsafe = static_cast(buffer_ci); + const auto result = vmaCreateBuffer(instance.GetAllocator(), &buffer_ci_unsafe, &alloc_info, + &buffer, &allocation, nullptr); + ASSERT(result == VK_SUCCESS); + return {buffer, allocation}; +} + +void TileManager::Upload(ScratchBuffer buffer, const void* data, size_t size) { + VmaAllocationInfo alloc_info{}; + vmaGetAllocationInfo(instance.GetAllocator(), buffer.second, &alloc_info); + ASSERT(size <= alloc_info.size); + void* ptr{}; + const auto result = vmaMapMemory(instance.GetAllocator(), buffer.second, &ptr); + ASSERT(result == VK_SUCCESS); + std::memcpy(ptr, data, size); + vmaUnmapMemory(instance.GetAllocator(), buffer.second); +} + +void TileManager::FreeBuffer(ScratchBuffer buffer) { + vmaDestroyBuffer(instance.GetAllocator(), buffer.first, buffer.second); +} + +std::optional TileManager::TryDetile(Image& image) { + if (!image.info.props.is_tiled) { + return std::nullopt; } const auto* detiler = GetDetiler(image); if (!detiler) { LOG_ERROR(Render_Vulkan, "Unsupported tiled image: {} ({})", vk::to_string(image.info.pixel_format), NameOf(image.info.tiling_mode)); - return false; + return std::nullopt; } - const auto offset = - staging.Copy(image.cpu_addr, image.info.guest_size_bytes, instance.StorageMinAlignment()); - image.Transit(vk::ImageLayout::eGeneral, vk::AccessFlagBits::eShaderWrite); + // Prepare input buffer + auto in_buffer = AllocBuffer(image.info.guest_size_bytes); + Upload(in_buffer, reinterpret_cast(image.info.guest_address), + image.info.guest_size_bytes); + + // Prepare output buffer + auto out_buffer = AllocBuffer(image.info.guest_size_bytes, true); + + scheduler.DeferOperation([=, this]() { + FreeBuffer(in_buffer); + FreeBuffer(out_buffer); + }); auto cmdbuf = scheduler.CommandBuffer(); cmdbuf.bindPipeline(vk::PipelineBindPoint::eCompute, *detiler->pl); const vk::DescriptorBufferInfo input_buffer_info{ - .buffer = staging.Handle(), - .offset = offset, + .buffer = in_buffer.first, + .offset = 0, .range = image.info.guest_size_bytes, }; - ASSERT(image.view_for_detiler.has_value()); - const vk::DescriptorImageInfo output_image_info{ - .imageView = *image.view_for_detiler->image_view, - .imageLayout = image.layout, + const vk::DescriptorBufferInfo output_buffer_info{ + .buffer = out_buffer.first, + .offset = 0, + .range = image.info.guest_size_bytes, }; std::vector set_writes{ @@ -357,20 +415,44 @@ bool TileManager::TryDetile(Image& image) { .dstBinding = 1, .dstArrayElement = 0, .descriptorCount = 1, - .descriptorType = vk::DescriptorType::eStorageImage, - .pImageInfo = &output_image_info, + .descriptorType = vk::DescriptorType::eStorageBuffer, + .pBufferInfo = &output_buffer_info, }, }; cmdbuf.pushDescriptorSetKHR(vk::PipelineBindPoint::eCompute, *detiler->pl_layout, 0, set_writes); - cmdbuf.pushConstants(*detiler->pl_layout, vk::ShaderStageFlagBits::eCompute, 0u, - sizeof(image.info.pitch), &image.info.pitch); + DetilerParams params; + params.pitch0 = image.info.pitch >> (image.info.props.is_block ? 2u : 0u); + params.num_levels = image.info.resources.levels; - cmdbuf.dispatch((image.info.size.width * image.info.size.height) / 64, 1, - 1); // round to 64 + ASSERT(image.info.resources.levels <= 14); + std::memset(¶ms.sizes, 0, sizeof(params.sizes)); + for (int m = 0; m < image.info.resources.levels; ++m) { + params.sizes[m] = image.info.mips_layout[m].size * image.info.resources.layers + + (m > 0 ? params.sizes[m - 1] : 0); + } - return true; + auto pitch = image.info.pitch; + cmdbuf.pushConstants(*detiler->pl_layout, vk::ShaderStageFlagBits::eCompute, 0u, sizeof(params), + ¶ms); + + ASSERT((image.info.guest_size_bytes % 64) == 0); + const auto bpp = image.info.num_bits * (image.info.props.is_block ? 16u : 1u); + const auto num_tiles = image.info.guest_size_bytes / (64 * (bpp / 8)); + cmdbuf.dispatch(num_tiles, 1, 1); + + const vk::BufferMemoryBarrier post_barrier{ + .srcAccessMask = vk::AccessFlagBits::eShaderWrite, + .dstAccessMask = vk::AccessFlagBits::eTransferRead, + .buffer = out_buffer.first, + .size = image.info.guest_size_bytes, + }; + cmdbuf.pipelineBarrier(vk::PipelineStageFlagBits::eComputeShader, + vk::PipelineStageFlagBits::eTransfer, vk::DependencyFlagBits::eByRegion, + {}, post_barrier, {}); + + return {out_buffer.first}; } } // namespace VideoCore diff --git a/src/video_core/texture_cache/tile_manager.h b/src/video_core/texture_cache/tile_manager.h index 98a33786..9102da08 100644 --- a/src/video_core/texture_cache/tile_manager.h +++ b/src/video_core/texture_cache/tile_manager.h @@ -34,10 +34,16 @@ struct DetilerContext { class TileManager { public: + using ScratchBuffer = std::pair; + TileManager(const Vulkan::Instance& instance, Vulkan::Scheduler& scheduler); ~TileManager(); - bool TryDetile(Image& image); + std::optional TryDetile(Image& image); + + ScratchBuffer AllocBuffer(u32 size, bool is_storage = false); + void Upload(ScratchBuffer buffer, const void* data, size_t size); + void FreeBuffer(ScratchBuffer buffer); private: const DetilerContext* GetDetiler(const Image& image) const; @@ -45,7 +51,6 @@ private: private: const Vulkan::Instance& instance; Vulkan::Scheduler& scheduler; - Vulkan::StreamBuffer staging; std::array detilers; }; From fb145342ce8f4b62aa475539a539352ff022b906 Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Sun, 28 Jul 2024 12:42:54 -0300 Subject: [PATCH 19/44] log improvement ThrowInvalidType (#330) * log improvement ThrowInvalidType * log improvement ThrowInvalidType --- src/shader_recompiler/ir/ir_emitter.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/shader_recompiler/ir/ir_emitter.cpp b/src/shader_recompiler/ir/ir_emitter.cpp index 6ea3123d..8b605df8 100644 --- a/src/shader_recompiler/ir/ir_emitter.cpp +++ b/src/shader_recompiler/ir/ir_emitter.cpp @@ -2,14 +2,19 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include #include "shader_recompiler/exception.h" #include "shader_recompiler/ir/ir_emitter.h" #include "shader_recompiler/ir/value.h" namespace Shader::IR { namespace { -[[noreturn]] void ThrowInvalidType(Type type) { - UNREACHABLE_MSG("Invalid type {}", u32(type)); +[[noreturn]] void ThrowInvalidType(Type type, + std::source_location loc = std::source_location::current()) { + const std::string functionName = loc.function_name(); + const int lineNumber = loc.line(); + UNREACHABLE_MSG("Invalid type = {}, functionName = {}, line = {}", u32(type), functionName, + lineNumber); } Value MakeLodClampPair(IREmitter& ir, const F32& bias_lod, const F32& lod_clamp) { From aa7c8ca2b6b0788550b700ebced6505dd92d4ddb Mon Sep 17 00:00:00 2001 From: Dzmitry Dubrova Date: Sun, 28 Jul 2024 18:43:44 +0300 Subject: [PATCH 20/44] Implement some pthread calls (#332) --- .../libraries/kernel/thread_management.cpp | 52 +++++++++++++++++++ src/core/libraries/kernel/thread_management.h | 3 ++ 2 files changed, 55 insertions(+) diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index 3e9e1994..0992009a 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -394,6 +394,18 @@ int PS4_SYSV_ABI scePthreadSetaffinity(ScePthread thread, const /*SceKernelCpuma return result; } +int PS4_SYSV_ABI scePthreadGetaffinity(ScePthread thread, /*SceKernelCpumask*/ u64* mask) { + LOG_INFO(Kernel_Pthread, "called"); + + if (thread == nullptr) { + return SCE_KERNEL_ERROR_ESRCH; + } + + auto result = scePthreadAttrGetaffinity(&thread->attr, mask); + + return result; +} + ScePthreadMutex* createMutex(ScePthreadMutex* addr) { if (addr == nullptr || *addr != nullptr) { return addr; @@ -1243,6 +1255,40 @@ int PS4_SYSV_ABI posix_pthread_attr_destroy(ScePthreadAttr* attr) { return result; } +int PS4_SYSV_ABI posix_pthread_attr_setschedparam(ScePthreadAttr* attr, + const SceKernelSchedParam* param) { + int result = scePthreadAttrSetschedparam(attr, param); + if (result < 0) { + int rt = result > SCE_KERNEL_ERROR_UNKNOWN && result <= SCE_KERNEL_ERROR_ESTOP + ? result + -SCE_KERNEL_ERROR_UNKNOWN + : POSIX_EOTHER; + return rt; + } + return result; +} + +int PS4_SYSV_ABI posix_pthread_attr_setinheritsched(ScePthreadAttr* attr, int inheritSched) { + int result = scePthreadAttrSetinheritsched(attr, inheritSched); + if (result < 0) { + int rt = result > SCE_KERNEL_ERROR_UNKNOWN && result <= SCE_KERNEL_ERROR_ESTOP + ? result + -SCE_KERNEL_ERROR_UNKNOWN + : POSIX_EOTHER; + return rt; + } + return result; +} + +int PS4_SYSV_ABI posix_pthread_setprio(ScePthread thread, int prio) { + int result = scePthreadSetprio(thread, prio); + if (result < 0) { + int rt = result > SCE_KERNEL_ERROR_UNKNOWN && result <= SCE_KERNEL_ERROR_ESTOP + ? result + -SCE_KERNEL_ERROR_UNKNOWN + : POSIX_EOTHER; + return rt; + } + return result; +} + int PS4_SYSV_ABI posix_pthread_attr_setdetachstate(ScePthreadAttr* attr, int detachstate) { // LOG_INFO(Kernel_Pthread, "posix pthread_mutexattr_init redirect to scePthreadMutexattrInit"); int result = scePthreadAttrSetdetachstate(attr, detachstate); @@ -1476,6 +1522,7 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("OxhIB8LB-PQ", "libkernel", 1, "libkernel", 1, 1, posix_pthread_create); LIB_FUNCTION("OxhIB8LB-PQ", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_create); LIB_FUNCTION("bt3CTBKmGyI", "libkernel", 1, "libkernel", 1, 1, scePthreadSetaffinity); + LIB_FUNCTION("rcrVFJsQWRY", "libkernel", 1, "libkernel", 1, 1, scePthreadGetaffinity); LIB_FUNCTION("6UgtwV+0zb4", "libkernel", 1, "libkernel", 1, 1, scePthreadCreate); LIB_FUNCTION("T72hz6ffq08", "libkernel", 1, "libkernel", 1, 1, scePthreadYield); LIB_FUNCTION("B5GmVDKwpn0", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_yield); @@ -1543,6 +1590,11 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("E+tyo3lp5Lw", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_attr_setdetachstate); LIB_FUNCTION("zHchY8ft5pk", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_attr_destroy); + LIB_FUNCTION("euKRgm0Vn2M", "libScePosix", 1, "libkernel", 1, 1, + posix_pthread_attr_setschedparam); + LIB_FUNCTION("7ZlAakEf0Qg", "libScePosix", 1, "libkernel", 1, 1, + posix_pthread_attr_setinheritsched); + LIB_FUNCTION("a2P9wYGeZvc", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_setprio); LIB_FUNCTION("Jmi+9w9u0E4", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_create_name_np); LIB_FUNCTION("OxhIB8LB-PQ", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_create); LIB_FUNCTION("+U1R4WtXvoc", "libScePosix", 1, "libkernel", 1, 1, posix_pthread_detach); diff --git a/src/core/libraries/kernel/thread_management.h b/src/core/libraries/kernel/thread_management.h index 8303c9ef..1b33ac94 100644 --- a/src/core/libraries/kernel/thread_management.h +++ b/src/core/libraries/kernel/thread_management.h @@ -169,9 +169,12 @@ ScePthread PS4_SYSV_ABI scePthreadSelf(); int PS4_SYSV_ABI scePthreadAttrSetaffinity(ScePthreadAttr* pattr, const /*SceKernelCpumask*/ u64 mask); int PS4_SYSV_ABI scePthreadSetaffinity(ScePthread thread, const /*SceKernelCpumask*/ u64 mask); +int PS4_SYSV_ABI scePthreadGetaffinity(ScePthread thread, /*SceKernelCpumask*/ u64* mask); int PS4_SYSV_ABI scePthreadCreate(ScePthread* thread, const ScePthreadAttr* attr, PthreadEntryFunc start_routine, void* arg, const char* name); +int PS4_SYSV_ABI scePthreadSetprio(ScePthread thread, int prio); + /*** * Mutex calls */ From 3e6af54ea34f706c0c80a2ba2efaee72bb71c7ed Mon Sep 17 00:00:00 2001 From: Vasyl Baran Date: Sun, 28 Jul 2024 22:21:18 +0300 Subject: [PATCH 21/44] Fixup for detiler artifacts on macOS --- src/video_core/texture_cache/tile_manager.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/video_core/texture_cache/tile_manager.cpp b/src/video_core/texture_cache/tile_manager.cpp index 4864b9db..4f199f81 100644 --- a/src/video_core/texture_cache/tile_manager.cpp +++ b/src/video_core/texture_cache/tile_manager.cpp @@ -326,7 +326,12 @@ TileManager::ScratchBuffer TileManager::AllocBuffer(u32 size, bool is_storage /* .usage = usage, }; +#ifdef __APPLE__ + // Fix for detiler artifacts on macOS + const bool is_large_buffer = true; +#else const bool is_large_buffer = size > 128_MB; +#endif VmaAllocationCreateInfo alloc_info{ .flags = !is_storage ? VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT | VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT From 43d60a8ac9e5b0f44c50c8fa263ac24957b8eeaf Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sun, 28 Jul 2024 16:31:15 -0700 Subject: [PATCH 22/44] Add sem_timedwait polyfill for macOS. --- CMakeLists.txt | 6 ++- .../libraries/kernel/thread_management.cpp | 37 ++++++++++++++++--- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08cc4103..9cb5f0ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,12 +85,16 @@ if (APPLE) find_package(date 3.0.1 CONFIG) endif() +# Note: Windows always has these functions through winpthreads include(CheckSymbolExists) check_symbol_exists(pthread_mutex_timedlock "pthread.h" HAVE_PTHREAD_MUTEX_TIMEDLOCK) -# Windows always has the function through winpthreads if(HAVE_PTHREAD_MUTEX_TIMEDLOCK OR WIN32) add_compile_options(-DHAVE_PTHREAD_MUTEX_TIMEDLOCK) endif() +check_symbol_exists(sem_timedwait "semaphore.h" HAVE_SEM_TIMEDWAIT) +if(HAVE_SEM_TIMEDWAIT OR WIN32) + add_compile_options(-DHAVE_SEM_TIMEDWAIT) +endif() add_subdirectory(externals) include_directories(src) diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index 0992009a..d5e2adea 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -1382,13 +1382,38 @@ int PS4_SYSV_ABI posix_sem_wait(sem_t* sem) { return sem_wait(sem); } -int PS4_SYSV_ABI posix_sem_timedwait(sem_t* sem, const timespec* t) { -#ifndef __APPLE__ - return sem_timedwait(sem, t); -#else - LOG_ERROR(Kernel_Pthread, "Apple doesn't support sem_timedwait yet"); - return 0; // unsupported for apple yet +#ifndef HAVE_SEM_TIMEDWAIT +int sem_timedwait(sem_t* sem, const struct timespec* abstime) { + int rc; + while ((rc = sem_trywait(sem)) == EAGAIN) { + struct timespec curr_time; + clock_gettime(CLOCK_REALTIME, &curr_time); + + s64 remaining_ns = 0; + remaining_ns += + (static_cast(abstime->tv_sec) - static_cast(curr_time.tv_sec)) * 1000000000L; + remaining_ns += static_cast(abstime->tv_nsec) - static_cast(curr_time.tv_nsec); + + if (remaining_ns <= 0) { + return ETIMEDOUT; + } + + struct timespec sleep_time; + sleep_time.tv_sec = 0; + if (remaining_ns < 5000000L) { + sleep_time.tv_nsec = remaining_ns; + } else { + sleep_time.tv_nsec = 5000000; + } + + nanosleep(&sleep_time, nullptr); + } + return rc; +} #endif + +int PS4_SYSV_ABI posix_sem_timedwait(sem_t* sem, const timespec* t) { + return sem_timedwait(sem, t); } int PS4_SYSV_ABI posix_sem_post(sem_t* sem) { From c1d01709bed276b174a90a679100ecbc8576c2bc Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Mon, 29 Jul 2024 19:08:06 +0300 Subject: [PATCH 23/44] kernel: Implement sceKernelSetVirtualRangeName (#338) * Fix in searchFree should fix #337 * clang format fix * sceKernelSetVirtualRangeName implementation * improved vaddr conversion * updated VirtualQuery to include name too * unmap also removed name thanks @red_prig * fixed copy... --- src/core/libraries/kernel/libkernel.cpp | 1 + src/core/libraries/kernel/memory_management.cpp | 15 +++++++++++++++ src/core/libraries/kernel/memory_management.h | 2 ++ src/core/memory.cpp | 11 ++++++++++- src/core/memory.h | 2 ++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/core/libraries/kernel/libkernel.cpp b/src/core/libraries/kernel/libkernel.cpp index a7f619f1..5f2e5a50 100644 --- a/src/core/libraries/kernel/libkernel.cpp +++ b/src/core/libraries/kernel/libkernel.cpp @@ -407,6 +407,7 @@ void LibKernel_Register(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("2SKEx6bSq-4", "libkernel", 1, "libkernel", 1, 1, sceKernelBatchMap); LIB_FUNCTION("kBJzF8x4SyE", "libkernel", 1, "libkernel", 1, 1, sceKernelBatchMap2); + LIB_FUNCTION("DGMG3JshrZU", "libkernel", 1, "libkernel", 1, 1, sceKernelSetVirtualRangeName); // equeue LIB_FUNCTION("D0OdFMjp46I", "libkernel", 1, "libkernel", 1, 1, sceKernelCreateEqueue); diff --git a/src/core/libraries/kernel/memory_management.cpp b/src/core/libraries/kernel/memory_management.cpp index 988b69d0..d396e1d7 100644 --- a/src/core/libraries/kernel/memory_management.cpp +++ b/src/core/libraries/kernel/memory_management.cpp @@ -274,4 +274,19 @@ s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEn return result; } +s32 PS4_SYSV_ABI sceKernelSetVirtualRangeName(const void* addr, size_t len, const char* name) { + static constexpr size_t MaxNameSize = 32; + if (std::strlen(name) > MaxNameSize) { + LOG_ERROR(Kernel_Vmm, "name exceeds 32 bytes!"); + return ORBIS_KERNEL_ERROR_ENAMETOOLONG; + } + + if (name == nullptr) { + LOG_ERROR(Kernel_Vmm, "name is invalid!"); + return ORBIS_KERNEL_ERROR_EFAULT; + } + auto* memory = Core::Memory::Instance(); + memory->NameVirtualRange(std::bit_cast(addr), len, name); + return ORBIS_OK; +} } // namespace Libraries::Kernel diff --git a/src/core/libraries/kernel/memory_management.h b/src/core/libraries/kernel/memory_management.h index cc89dfa7..25a4a9f0 100644 --- a/src/core/libraries/kernel/memory_management.h +++ b/src/core/libraries/kernel/memory_management.h @@ -108,4 +108,6 @@ s32 PS4_SYSV_ABI sceKernelBatchMap(OrbisKernelBatchMapEntry* entries, int numEnt s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEntries, int* numEntriesOut, int flags); +s32 PS4_SYSV_ABI sceKernelSetVirtualRangeName(const void* addr, size_t len, const char* name); + } // namespace Libraries::Kernel diff --git a/src/core/memory.cpp b/src/core/memory.cpp index f2607bff..27e05f41 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -188,7 +188,7 @@ int MemoryManager::MapFile(void** out_addr, VAddr virtual_addr, size_t size, Mem // Find first free area to map the file. if (False(flags & MemoryMapFlags::Fixed)) { - mapped_addr = SearchFree(mapped_addr, size_aligned); + mapped_addr = SearchFree(mapped_addr, size_aligned, 1); } if (True(flags & MemoryMapFlags::Fixed)) { @@ -235,6 +235,7 @@ void MemoryManager::UnmapMemory(VAddr virtual_addr, size_t size) { vma.prot = MemoryProt::NoAccess; vma.phys_base = 0; vma.disallow_merge = false; + vma.name = ""; MergeAdjacent(vma_map, new_it); // Unmap the memory region. @@ -280,6 +281,7 @@ int MemoryManager::VirtualQuery(VAddr addr, int flags, info->is_flexible.Assign(vma.type == VMAType::Flexible); info->is_direct.Assign(vma.type == VMAType::Direct); info->is_commited.Assign(vma.type != VMAType::Free); + vma.name.copy(info->name.data(), std::min(info->name.size(), vma.name.size())); if (vma.type == VMAType::Direct) { const auto dmem_it = FindDmemArea(vma.phys_base); ASSERT(dmem_it != dmem_map.end()); @@ -338,6 +340,13 @@ std::pair MemoryManager::GetVulkanBuffer(VAddr addr) { return std::make_pair(*it->second.buffer, addr - it->first); } +void MemoryManager::NameVirtualRange(VAddr virtual_addr, size_t size, std::string_view name) { + auto it = FindVMA(virtual_addr); + + ASSERT_MSG(it->second.Contains(virtual_addr, size), + "Range provided is not fully containted in vma"); + it->second.name = name; +} VAddr MemoryManager::SearchFree(VAddr virtual_addr, size_t size, u32 alignment) { auto it = FindVMA(virtual_addr); // If the VMA is free and contains the requested mapping we are done. diff --git a/src/core/memory.h b/src/core/memory.h index ff4af5cd..2b3d07a7 100644 --- a/src/core/memory.h +++ b/src/core/memory.h @@ -177,6 +177,8 @@ public: int GetDirectMemoryType(PAddr addr, int* directMemoryTypeOut, void** directMemoryStartOut, void** directMemoryEndOut); + void NameVirtualRange(VAddr virtual_addr, size_t size, std::string_view name); + private: VMAHandle FindVMA(VAddr target) { return std::prev(vma_map.upper_bound(target)); From 867f38fe13f484e439f978e5a3d0f4742324e0f0 Mon Sep 17 00:00:00 2001 From: Borchev <4501931+Borchev@users.noreply.github.com> Date: Tue, 30 Jul 2024 12:37:05 -0700 Subject: [PATCH 24/44] Add pthread_attr_getstacksize thunk --- src/core/libraries/kernel/thread_management.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index d5e2adea..4615b246 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -1428,6 +1428,10 @@ int PS4_SYSV_ABI posix_sem_getvalue(sem_t* sem, int* sval) { return sem_getvalue(sem, sval); } +int PS4_SYSV_ABI posix_pthread_attr_getstacksize(const pthread_attr_t* attr, size_t* size) { + return pthread_attr_getstacksize(attr, size); +} + int PS4_SYSV_ABI scePthreadGetschedparam(ScePthread thread, int* policy, SceKernelSchedParam* param) { return pthread_getschedparam(thread->pth, policy, param); @@ -1633,6 +1637,8 @@ void pthreadSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("IKP8typ0QUk", "libScePosix", 1, "libkernel", 1, 1, posix_sem_post); LIB_FUNCTION("cDW233RAwWo", "libScePosix", 1, "libkernel", 1, 1, posix_sem_destroy); LIB_FUNCTION("Bq+LRV-N6Hk", "libScePosix", 1, "libkernel", 1, 1, posix_sem_getvalue); + LIB_FUNCTION("0qOtCR-ZHck", "libScePosix", 1, "libkernel", 1, 1, + posix_pthread_attr_getstacksize); // libs RwlockSymbolsRegister(sym); SemaphoreSymbolsRegister(sym); From 361271826e27fd15aa724b1806c5f58003760977 Mon Sep 17 00:00:00 2001 From: Borchev <4501931+Borchev@users.noreply.github.com> Date: Tue, 30 Jul 2024 12:40:42 -0700 Subject: [PATCH 25/44] Fix SearchFree function bug (#339) --- src/core/memory.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 27e05f41..aa552d51 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -348,7 +348,15 @@ void MemoryManager::NameVirtualRange(VAddr virtual_addr, size_t size, std::strin it->second.name = name; } VAddr MemoryManager::SearchFree(VAddr virtual_addr, size_t size, u32 alignment) { + // If the requested address is below the mapped range, start search from the lowest address + auto min_search_address = impl.SystemManagedVirtualBase(); + if (virtual_addr < min_search_address) { + virtual_addr = min_search_address; + } + auto it = FindVMA(virtual_addr); + ASSERT_MSG(it != vma_map.end(), "Specified mapping address was not found!"); + // If the VMA is free and contains the requested mapping we are done. if (it->second.IsFree() && it->second.Contains(virtual_addr, size)) { return virtual_addr; From b3525d7f79a3d9f917b050ce296152e1cd90b3ae Mon Sep 17 00:00:00 2001 From: Xphalnos <164882787+Xphalnos@users.noreply.github.com> Date: Tue, 30 Jul 2024 21:41:31 +0200 Subject: [PATCH 26/44] Don't download unnecessary DLLs (#341) --- .github/workflows/windows-qt.yml | 3 ++- CMakeLists.txt | 21 ++++++--------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/.github/workflows/windows-qt.yml b/.github/workflows/windows-qt.yml index 9610280b..099ece0b 100644 --- a/.github/workflows/windows-qt.yml +++ b/.github/workflows/windows-qt.yml @@ -28,8 +28,9 @@ jobs: - name: Setup Qt uses: jurplel/install-qt-action@v4 with: - arch: win64_msvc2019_64 version: 6.7.2 + arch: win64_msvc2019_64 + archives: qtsvg qtbase - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. diff --git a/CMakeLists.txt b/CMakeLists.txt index 9cb5f0ce..60dad68a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,12 +19,11 @@ project(shadPS4) option(ENABLE_QT_GUI "Enable the Qt GUI. If not selected then the emulator uses a minimal SDL-based UI instead" OFF) -# This function should be passed a list of all files in a target. It will automatically generate -# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the -# one in the filesystem. +# This function should be passed a list of all files in a target. It will automatically generate file groups +# following the directory hierarchy, so that the layout of the files in IDEs matches the one in the filesystem. function(create_target_directory_groups target_name) - # Place any files that aren't in the source list in a separate group so that they don't get in - # the way. + + # Place any files that aren't in the source list in a separate group so that they don't get in the way. source_group("Other Files" REGULAR_EXPRESSION ".") get_target_property(target_sources "${target_name}" SOURCES) @@ -39,14 +38,6 @@ endfunction() # Setup a custom clang-format target (if clang-format can be found) that will run # against all the src files. This should be used before making a pull request. -# ======================================================================= - -set(CLANG_FORMAT_POSTFIX "-17") -find_program(CLANG_FORMAT - NAMES clang-format${CLANG_FORMAT_POSTFIX} - clang-format - PATHS ${PROJECT_BINARY_DIR}/externals) - if (CLANG_FORMAT) set(SRCS ${PROJECT_SOURCE_DIR}/src) set(CCOMMENT "Running clang format against all the .h and .cpp files in src/") @@ -503,7 +494,7 @@ set(EMULATOR src/emulator.cpp src/sdl_window.cpp ) -# the above is shared in sdl and qt version (TODO share them all) +# The above is shared in SDL and Qt version (TODO share them all) if(ENABLE_QT_GUI) qt_add_resources(RESOURCE_FILES src/shadps4.qrc) @@ -632,6 +623,6 @@ target_include_directories(shadps4 PRIVATE ${HOST_SHADERS_INCLUDE}) if (ENABLE_QT_GUI) set_target_properties(shadps4 PROPERTIES -# WIN32_EXECUTABLE ON +# WIN32_EXECUTABLE ON MACOSX_BUNDLE ON) endif() From a7c9bfa5c59d3e75981feeacfba9c92ca951a057 Mon Sep 17 00:00:00 2001 From: TheTurtle <47210458+raphaelthegreat@users.noreply.github.com> Date: Wed, 31 Jul 2024 00:32:40 +0300 Subject: [PATCH 27/44] shader_recompiler: Small instruction parsing refactor/bugfixes (#340) * translator: Implemtn f32 to f16 convert * shader_recompiler: Add bit instructions * shader_recompiler: More data share instructions * shader_recompiler: Remove exec contexts, fix S_MOV_B64 * shader_recompiler: Split instruction parsing into categories * shader_recompiler: Better BFS search * shader_recompiler: Constant propagation pass for cmp_class_f32 * shader_recompiler: Partial readfirstlane implementation * shader_recompiler: Stub readlane/writelane only for non-compute * hack: Fix swizzle on RDR * Will properly fix this when merging this * clang format * address_space: Bump user area size to full * shader_recompiler: V_INTERP_MOV_F32 * Should work the same as spirv will emit flat decoration on demand * kernel: Add MAP_OP_MAP_FLEXIBLE * image_view: Attempt to apply storage swizzle on format * vk_scheduler: Barrier attachments on renderpass end * clang format * liverpool: cs state backup * shader_recompiler: More instructions and formats * vector_alu: Proper V_MBCNT_U32_B32 * shader_recompiler: Port some dark souls things * file_system: Implement sceKernelRename * more formats * clang format * resource_tracking_pass: Back to assert * translate: Tracedata * kernel: Remove tracy lock * Solves random crashes in Dark Souls * code: Review comments --- src/common/config.cpp | 2 +- src/common/logging/backend.cpp | 2 +- src/core/address_space.h | 5 +- src/core/file_sys/fs.cpp | 2 +- src/core/libraries/gnmdriver/gnmdriver.cpp | 2 +- src/core/libraries/kernel/file_system.cpp | 23 + src/core/libraries/kernel/libkernel.cpp | 4 + .../libraries/kernel/memory_management.cpp | 10 + .../libraries/kernel/thread_management.cpp | 12 - src/core/libraries/kernel/thread_management.h | 2 - src/core/libraries/network/net.cpp | 2 +- src/core/libraries/network/netctl.cpp | 2 +- src/core/libraries/np_manager/np_manager.cpp | 4 +- .../backend/spirv/emit_spirv.cpp | 9 +- .../spirv/emit_spirv_bitwise_conversion.cpp | 4 +- .../spirv/emit_spirv_context_get_set.cpp | 6 +- .../backend/spirv/emit_spirv_convert.cpp | 4 + .../spirv/emit_spirv_floating_point.cpp | 4 + .../backend/spirv/emit_spirv_image.cpp | 4 +- .../backend/spirv/emit_spirv_instructions.h | 6 +- .../backend/spirv/emit_spirv_integer.cpp | 4 + .../backend/spirv/emit_spirv_warp.cpp | 4 + .../backend/spirv/spirv_emit_context.cpp | 43 +- .../backend/spirv/spirv_emit_context.h | 4 +- src/shader_recompiler/frontend/format.cpp | 12 +- src/shader_recompiler/frontend/instruction.h | 4 +- .../frontend/structured_control_flow.cpp | 14 +- .../frontend/structured_control_flow.h | 5 +- .../frontend/translate/data_share.cpp | 76 +- .../frontend/translate/export.cpp | 2 +- .../frontend/translate/scalar_alu.cpp | 177 +++- .../frontend/translate/scalar_memory.cpp | 23 + .../frontend/translate/translate.cpp | 772 ++---------------- .../frontend/translate/translate.h | 40 +- .../frontend/translate/vector_alu.cpp | 397 ++++++++- .../translate/vector_interpolation.cpp | 20 + .../frontend/translate/vector_memory.cpp | 91 ++- .../ir/breadth_first_search.h | 22 +- src/shader_recompiler/ir/ir_emitter.cpp | 19 +- src/shader_recompiler/ir/ir_emitter.h | 3 + src/shader_recompiler/ir/opcodes.inc | 4 + .../ir/passes/constant_propogation_pass.cpp | 15 + .../ir/passes/resource_tracking_pass.cpp | 85 +- .../ir/passes/shader_info_collection_pass.cpp | 8 + src/shader_recompiler/ir/reg.h | 18 + src/shader_recompiler/profile.h | 1 + src/shader_recompiler/recompiler.cpp | 9 +- src/shader_recompiler/recompiler.h | 5 +- src/shader_recompiler/runtime_info.h | 8 + src/video_core/amdgpu/liverpool.cpp | 5 +- src/video_core/amdgpu/liverpool.h | 2 + src/video_core/amdgpu/pixel_format.cpp | 71 ++ src/video_core/amdgpu/pixel_format.h | 11 + src/video_core/amdgpu/resource.h | 46 +- .../renderer_vulkan/liverpool_to_vk.cpp | 24 + .../renderer_vulkan/vk_compute_pipeline.cpp | 2 +- .../renderer_vulkan/vk_graphics_pipeline.cpp | 2 +- .../renderer_vulkan/vk_instance.cpp | 10 +- src/video_core/renderer_vulkan/vk_instance.h | 6 + .../renderer_vulkan/vk_pipeline_cache.cpp | 7 +- .../renderer_vulkan/vk_rasterizer.cpp | 4 +- .../renderer_vulkan/vk_scheduler.cpp | 25 + src/video_core/renderer_vulkan/vk_scheduler.h | 2 + src/video_core/texture_cache/image_view.cpp | 25 +- src/video_core/texture_cache/image_view.h | 2 + .../texture_cache/texture_cache.cpp | 15 +- 66 files changed, 1349 insertions(+), 904 deletions(-) diff --git a/src/common/config.cpp b/src/common/config.cpp index 57f40b21..7e677f84 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -15,7 +15,7 @@ static u32 screenWidth = 1280; static u32 screenHeight = 720; static s32 gpuId = -1; // Vulkan physical device index. Set to negative for auto select static std::string logFilter; -static std::string logType = "sync"; +static std::string logType = "async"; static bool isDebugDump = false; static bool isLibc = true; static bool isShowSplash = false; diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index 0b03c86b..a21af8bb 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp @@ -207,8 +207,8 @@ public: message_queue.EmplaceWait(entry); } else { ForEachBackend([&entry](auto& backend) { backend.Write(entry); }); + std::fflush(stdout); } - std::fflush(stdout); } private: diff --git a/src/core/address_space.h b/src/core/address_space.h index e2515902..29f74f56 100644 --- a/src/core/address_space.h +++ b/src/core/address_space.h @@ -34,10 +34,7 @@ constexpr VAddr USER_MAX = 0xFBFFFFFFFFULL; static constexpr size_t SystemManagedSize = SYSTEM_MANAGED_MAX - SYSTEM_MANAGED_MIN + 1; static constexpr size_t SystemReservedSize = SYSTEM_RESERVED_MAX - SYSTEM_RESERVED_MIN + 1; -// User area size is normally larger than this. However games are unlikely to map to high -// regions of that area, so by default we allocate a smaller virtual address space (about 1/4th). -// to save space on page tables. -static constexpr size_t UserSize = 1ULL << 39; +static constexpr size_t UserSize = 1ULL << 40; /** * Represents the user virtual address space backed by a dmem memory block diff --git a/src/core/file_sys/fs.cpp b/src/core/file_sys/fs.cpp index 3177770b..2bcff191 100644 --- a/src/core/file_sys/fs.cpp +++ b/src/core/file_sys/fs.cpp @@ -70,7 +70,7 @@ std::filesystem::path MntPoints::GetHostPath(const std::string& guest_directory) // exist in filesystem but in different case. auto guest_path = current_path; while (!path_parts.empty()) { - const auto& part = path_parts.back(); + const auto part = path_parts.back(); const auto add_match = [&](const auto& host_part) { current_path /= host_part; guest_path /= part; diff --git a/src/core/libraries/gnmdriver/gnmdriver.cpp b/src/core/libraries/gnmdriver/gnmdriver.cpp index dba69d6e..650252f9 100644 --- a/src/core/libraries/gnmdriver/gnmdriver.cpp +++ b/src/core/libraries/gnmdriver/gnmdriver.cpp @@ -957,7 +957,7 @@ int PS4_SYSV_ABI sceGnmGetGpuBlockStatus() { } int PS4_SYSV_ABI sceGnmGetGpuCoreClockFrequency() { - LOG_ERROR(Lib_GnmDriver, "(STUBBED) called"); + LOG_DEBUG(Lib_GnmDriver, "(STUBBED) called"); return ORBIS_OK; } diff --git a/src/core/libraries/kernel/file_system.cpp b/src/core/libraries/kernel/file_system.cpp index 4a42b0d6..f8386347 100644 --- a/src/core/libraries/kernel/file_system.cpp +++ b/src/core/libraries/kernel/file_system.cpp @@ -472,6 +472,28 @@ s64 PS4_SYSV_ABI sceKernelPwrite(int d, void* buf, size_t nbytes, s64 offset) { return file->f.WriteRaw(buf, nbytes); } +s32 PS4_SYSV_ABI sceKernelRename(const char* from, const char* to) { + auto* mnt = Common::Singleton::Instance(); + const auto src_path = mnt->GetHostPath(from); + if (!std::filesystem::exists(src_path)) { + return ORBIS_KERNEL_ERROR_ENOENT; + } + const auto dst_path = mnt->GetHostPath(to); + const bool src_is_dir = std::filesystem::is_directory(src_path); + const bool dst_is_dir = std::filesystem::is_directory(dst_path); + if (src_is_dir && !dst_is_dir) { + return ORBIS_KERNEL_ERROR_ENOTDIR; + } + if (!src_is_dir && dst_is_dir) { + return ORBIS_KERNEL_ERROR_EISDIR; + } + if (dst_is_dir && !std::filesystem::is_empty(dst_path)) { + return ORBIS_KERNEL_ERROR_ENOTEMPTY; + } + std::filesystem::copy(src_path, dst_path, std::filesystem::copy_options::overwrite_existing); + return ORBIS_OK; +} + void fileSystemSymbolsRegister(Core::Loader::SymbolsResolver* sym) { std::srand(std::time(nullptr)); LIB_FUNCTION("1G3lF1Gg1k8", "libkernel", 1, "libkernel", 1, 1, sceKernelOpen); @@ -493,6 +515,7 @@ void fileSystemSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("kBwCPsYX-m4", "libkernel", 1, "libkernel", 1, 1, sceKernelFStat); LIB_FUNCTION("mqQMh1zPPT8", "libScePosix", 1, "libkernel", 1, 1, posix_fstat); LIB_FUNCTION("VW3TVZiM4-E", "libkernel", 1, "libkernel", 1, 1, sceKernelFtruncate); + LIB_FUNCTION("52NcYU9+lEo", "libkernel", 1, "libkernel", 1, 1, sceKernelRename); LIB_FUNCTION("E6ao34wPw+U", "libScePosix", 1, "libkernel", 1, 1, posix_stat); LIB_FUNCTION("+r3rMFwItV4", "libkernel", 1, "libkernel", 1, 1, sceKernelPread); diff --git a/src/core/libraries/kernel/libkernel.cpp b/src/core/libraries/kernel/libkernel.cpp index 5f2e5a50..e2625819 100644 --- a/src/core/libraries/kernel/libkernel.cpp +++ b/src/core/libraries/kernel/libkernel.cpp @@ -7,6 +7,7 @@ #include #include "common/assert.h" +#include "common/debug.h" #include "common/logging/log.h" #include "common/polyfill_thread.h" #include "common/singleton.h" @@ -84,6 +85,9 @@ static PS4_SYSV_ABI void stack_chk_fail() { int PS4_SYSV_ABI sceKernelMunmap(void* addr, size_t len) { LOG_INFO(Kernel_Vmm, "addr = {}, len = {:#x}", fmt::ptr(addr), len); + if (len == 0) { + return ORBIS_OK; + } auto* memory = Core::Memory::Instance(); memory->UnmapMemory(std::bit_cast(addr), len); return SCE_OK; diff --git a/src/core/libraries/kernel/memory_management.cpp b/src/core/libraries/kernel/memory_management.cpp index d396e1d7..94762c4a 100644 --- a/src/core/libraries/kernel/memory_management.cpp +++ b/src/core/libraries/kernel/memory_management.cpp @@ -262,6 +262,16 @@ s32 PS4_SYSV_ABI sceKernelBatchMap2(OrbisKernelBatchMapEntry* entries, int numEn LOG_INFO(Kernel_Vmm, "BatchMap: entry = {}, operation = {}, len = {:#x}, result = {}", i, entries[i].operation, entries[i].length, result); + if (result == 0) + processed++; + } else if (entries[i].operation == MemoryOpTypes::ORBIS_KERNEL_MAP_OP_MAP_FLEXIBLE) { + result = sceKernelMapNamedFlexibleMemory(&entries[i].start, entries[i].length, + entries[i].protection, flags, ""); + LOG_INFO(Kernel_Vmm, + "BatchMap: entry = {}, operation = {}, len = {:#x}, type = {}, " + "result = {}", + i, entries[i].operation, entries[i].length, (u8)entries[i].type, result); + if (result == 0) processed++; } else { diff --git a/src/core/libraries/kernel/thread_management.cpp b/src/core/libraries/kernel/thread_management.cpp index 4615b246..c5237d0a 100644 --- a/src/core/libraries/kernel/thread_management.cpp +++ b/src/core/libraries/kernel/thread_management.cpp @@ -439,11 +439,7 @@ int PS4_SYSV_ABI scePthreadMutexInit(ScePthreadMutex* mutex, const ScePthreadMut int result = pthread_mutex_init(&(*mutex)->pth_mutex, &(*attr)->pth_mutex_attr); - static auto mutex_loc = MUTEX_LOCATION("mutex"); - (*mutex)->tracy_lock = std::make_unique(&mutex_loc); - if (name != nullptr) { - (*mutex)->tracy_lock->CustomName(name, std::strlen(name)); LOG_INFO(Kernel_Pthread, "name={}, result={}", name, result); } @@ -555,15 +551,11 @@ int PS4_SYSV_ABI scePthreadMutexLock(ScePthreadMutex* mutex) { return SCE_KERNEL_ERROR_EINVAL; } - (*mutex)->tracy_lock->BeforeLock(); - int result = pthread_mutex_lock(&(*mutex)->pth_mutex); if (result != 0) { LOG_TRACE(Kernel_Pthread, "Locked name={}, result={}", (*mutex)->name, result); } - (*mutex)->tracy_lock->AfterLock(); - switch (result) { case 0: return SCE_OK; @@ -589,8 +581,6 @@ int PS4_SYSV_ABI scePthreadMutexUnlock(ScePthreadMutex* mutex) { LOG_TRACE(Kernel_Pthread, "Unlocking name={}, result={}", (*mutex)->name, result); } - (*mutex)->tracy_lock->AfterUnlock(); - switch (result) { case 0: return SCE_OK; @@ -1195,8 +1185,6 @@ int PS4_SYSV_ABI scePthreadMutexTrylock(ScePthreadMutex* mutex) { LOG_TRACE(Kernel_Pthread, "name={}, result={}", (*mutex)->name, result); } - (*mutex)->tracy_lock->AfterTryLock(result == 0); - switch (result) { case 0: return ORBIS_OK; diff --git a/src/core/libraries/kernel/thread_management.h b/src/core/libraries/kernel/thread_management.h index 1b33ac94..c5935275 100644 --- a/src/core/libraries/kernel/thread_management.h +++ b/src/core/libraries/kernel/thread_management.h @@ -9,7 +9,6 @@ #include #include #include -#include "common/debug.h" #include "common/types.h" namespace Core::Loader { @@ -74,7 +73,6 @@ struct PthreadMutexInternal { u8 reserved[256]; std::string name; pthread_mutex_t pth_mutex; - std::unique_ptr tracy_lock; }; struct PthreadMutexattrInternal { diff --git a/src/core/libraries/network/net.cpp b/src/core/libraries/network/net.cpp index 1569a51c..958f9264 100644 --- a/src/core/libraries/network/net.cpp +++ b/src/core/libraries/network/net.cpp @@ -559,7 +559,7 @@ int PS4_SYSV_ABI sceNetEpollDestroy() { } int PS4_SYSV_ABI sceNetEpollWait() { - LOG_ERROR(Lib_Net, "(STUBBED) called"); + LOG_TRACE(Lib_Net, "(STUBBED) called"); return ORBIS_OK; } diff --git a/src/core/libraries/network/netctl.cpp b/src/core/libraries/network/netctl.cpp index ab1cb8ae..a1c8e81c 100644 --- a/src/core/libraries/network/netctl.cpp +++ b/src/core/libraries/network/netctl.cpp @@ -79,7 +79,7 @@ int PS4_SYSV_ABI sceNetCtlUnregisterCallbackV6() { } int PS4_SYSV_ABI sceNetCtlCheckCallback() { - LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); + LOG_TRACE(Lib_NetCtl, "(STUBBED) called"); return ORBIS_OK; } diff --git a/src/core/libraries/np_manager/np_manager.cpp b/src/core/libraries/np_manager/np_manager.cpp index ee4b3d6b..33308abc 100644 --- a/src/core/libraries/np_manager/np_manager.cpp +++ b/src/core/libraries/np_manager/np_manager.cpp @@ -870,7 +870,7 @@ int PS4_SYSV_ABI sceNpAsmTerminate() { } int PS4_SYSV_ABI sceNpCheckCallback() { - LOG_ERROR(Lib_NpManager, "(STUBBED) called"); + LOG_TRACE(Lib_NpManager, "(STUBBED) called"); return ORBIS_OK; } @@ -3510,4 +3510,4 @@ void RegisterlibSceNpManager(Core::Loader::SymbolsResolver* sym) { sceNpUnregisterStateCallbackForToolkit); }; -} // namespace Libraries::NpManager \ No newline at end of file +} // namespace Libraries::NpManager diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.cpp b/src/shader_recompiler/backend/spirv/emit_spirv.cpp index 561014a3..c7042763 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv.cpp @@ -183,6 +183,7 @@ void DefineEntryPoint(const IR::Program& program, EmitContext& ctx, Id main) { ctx.AddCapability(spv::Capability::Float16); ctx.AddCapability(spv::Capability::Int16); } + ctx.AddCapability(spv::Capability::Int64); if (info.has_storage_images) { ctx.AddCapability(spv::Capability::StorageImageExtendedFormats); } @@ -204,8 +205,8 @@ void DefineEntryPoint(const IR::Program& program, EmitContext& ctx, Id main) { } else { ctx.AddExecutionMode(main, spv::ExecutionMode::OriginUpperLeft); } + ctx.AddCapability(spv::Capability::GroupNonUniform); if (info.uses_group_quad) { - ctx.AddCapability(spv::Capability::GroupNonUniform); ctx.AddCapability(spv::Capability::GroupNonUniformQuad); } if (info.has_discard) { @@ -217,9 +218,9 @@ void DefineEntryPoint(const IR::Program& program, EmitContext& ctx, Id main) { if (info.has_image_query) { ctx.AddCapability(spv::Capability::ImageQuery); } - // if (program.info.stores_frag_depth) { - // ctx.AddExecutionMode(main, spv::ExecutionMode::DepthReplacing); - // } + if (info.stores.Get(IR::Attribute::Depth)) { + ctx.AddExecutionMode(main, spv::ExecutionMode::DepthReplacing); + } break; default: throw NotImplementedException("Stage {}", u32(program.info.stage)); diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp index da29f392..03a0a00f 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp @@ -6,8 +6,8 @@ namespace Shader::Backend::SPIRV { -void EmitBitCastU16F16(EmitContext&) { - UNREACHABLE_MSG("SPIR-V Instruction"); +Id EmitBitCastU16F16(EmitContext& ctx, Id value) { + return ctx.OpBitcast(ctx.U16, value); } Id EmitBitCastU32F32(EmitContext& ctx, Id value) { diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp index 87ffa150..02480303 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp @@ -120,6 +120,7 @@ void EmitGetGotoVariable(EmitContext&) { } Id EmitReadConst(EmitContext& ctx) { + return ctx.u32_zero_value; UNREACHABLE_MSG("Unreachable instruction"); } @@ -149,6 +150,9 @@ Id EmitGetAttribute(EmitContext& ctx, IR::Attribute attr, u32 comp) { // Attribute is disabled or varying component is not written return ctx.ConstF32(comp == 3 ? 1.0f : 0.0f); } + if (param.is_default) { + return ctx.OpCompositeExtract(param.component_type, param.id, comp); + } if (param.num_components > 1) { const Id pointer{ @@ -208,7 +212,7 @@ Id EmitGetAttributeU32(EmitContext& ctx, IR::Attribute attr, u32 comp) { void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, Id value, u32 element) { const Id pointer{OutputAttrPointer(ctx, attr, element)}; - ctx.OpStore(pointer, value); + ctx.OpStore(pointer, ctx.OpBitcast(ctx.F32[1], value)); } Id EmitLoadBufferU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address) { diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp index ede592e0..945fa687 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp @@ -259,4 +259,8 @@ Id EmitConvertU16U32(EmitContext& ctx, Id value) { return ctx.OpUConvert(ctx.U16, value); } +Id EmitConvertU32U16(EmitContext& ctx, Id value) { + return ctx.OpUConvert(ctx.U32[1], value); +} + } // namespace Shader::Backend::SPIRV diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp index 911983a4..e822eabe 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp @@ -385,4 +385,8 @@ Id EmitFPIsInf64(EmitContext& ctx, Id value) { return ctx.OpIsInf(ctx.U1[1], value); } +void EmitFPCmpClass32(EmitContext&) { + UNREACHABLE(); +} + } // namespace Shader::Backend::SPIRV diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp index 17def57a..030d3948 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp @@ -70,7 +70,6 @@ Id EmitImageGather(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id o const u32 comp = inst->Flags().gather_comp.Value(); ImageOperands operands; operands.Add(spv::ImageOperandsMask::Offset, offset); - operands.Add(spv::ImageOperandsMask::Lod, ctx.ConstF32(0.f)); return ctx.OpImageGather(ctx.F32[4], sampled_image, coords, ctx.ConstU32(comp), operands.mask, operands.operands); } @@ -106,8 +105,7 @@ Id EmitImageQueryDimensions(EmitContext& ctx, IR::Inst* inst, u32 handle, Id lod const auto type = ctx.info.images[handle & 0xFFFF].type; const Id zero = ctx.u32_zero_value; const auto mips{[&] { return skip_mips ? zero : ctx.OpImageQueryLevels(ctx.U32[1], image); }}; - const bool uses_lod{type != AmdGpu::ImageType::Color2DMsaa && - type != AmdGpu::ImageType::Buffer}; + const bool uses_lod{type != AmdGpu::ImageType::Color2DMsaa}; const auto query{[&](Id type) { return uses_lod ? ctx.OpImageQuerySizeLod(type, image, lod) : ctx.OpImageQuerySize(type, image); diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h index 80dd66b1..51899eb4 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h +++ b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h @@ -42,6 +42,7 @@ void EmitSetVcc(EmitContext& ctx); void EmitSetSccLo(EmitContext& ctx); void EmitSetVccLo(EmitContext& ctx); void EmitSetVccHi(EmitContext& ctx); +void EmitFPCmpClass32(EmitContext& ctx); void EmitPrologue(EmitContext& ctx); void EmitEpilogue(EmitContext& ctx); void EmitDiscard(EmitContext& ctx); @@ -148,7 +149,7 @@ Id EmitSelectU64(EmitContext& ctx, Id cond, Id true_value, Id false_value); Id EmitSelectF16(EmitContext& ctx, Id cond, Id true_value, Id false_value); Id EmitSelectF32(EmitContext& ctx, Id cond, Id true_value, Id false_value); Id EmitSelectF64(EmitContext& ctx, Id cond, Id true_value, Id false_value); -void EmitBitCastU16F16(EmitContext& ctx); +Id EmitBitCastU16F16(EmitContext& ctx, Id value); Id EmitBitCastU32F32(EmitContext& ctx, Id value); void EmitBitCastU64F64(EmitContext& ctx); Id EmitBitCastF16U16(EmitContext& ctx, Id value); @@ -282,6 +283,7 @@ Id EmitBitCount32(EmitContext& ctx, Id value); Id EmitBitwiseNot32(EmitContext& ctx, Id value); Id EmitFindSMsb32(EmitContext& ctx, Id value); Id EmitFindUMsb32(EmitContext& ctx, Id value); +Id EmitFindILsb32(EmitContext& ctx, Id value); Id EmitSMin32(EmitContext& ctx, Id a, Id b); Id EmitUMin32(EmitContext& ctx, Id a, Id b); Id EmitSMax32(EmitContext& ctx, Id a, Id b); @@ -353,6 +355,7 @@ Id EmitConvertF64U16(EmitContext& ctx, Id value); Id EmitConvertF64U32(EmitContext& ctx, Id value); Id EmitConvertF64U64(EmitContext& ctx, Id value); Id EmitConvertU16U32(EmitContext& ctx, Id value); +Id EmitConvertU32U16(EmitContext& ctx, Id value); Id EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id bias_lc, Id offset); @@ -387,6 +390,7 @@ Id EmitImageAtomicXor32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value); Id EmitLaneId(EmitContext& ctx); +Id EmitWarpId(EmitContext& ctx); Id EmitQuadShuffle(EmitContext& ctx, Id value, Id index); } // namespace Shader::Backend::SPIRV diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp index 019ceb01..f20c4fac 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp @@ -198,6 +198,10 @@ Id EmitFindUMsb32(EmitContext& ctx, Id value) { return ctx.OpFindUMsb(ctx.U32[1], value); } +Id EmitFindILsb32(EmitContext& ctx, Id value) { + return ctx.OpFindILsb(ctx.U32[1], value); +} + Id EmitSMin32(EmitContext& ctx, Id a, Id b) { return ctx.OpSMin(ctx.U32[1], a, b); } diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp index a1751588..bd4ac066 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp @@ -10,6 +10,10 @@ Id SubgroupScope(EmitContext& ctx) { return ctx.ConstU32(static_cast(spv::Scope::Subgroup)); } +Id EmitWarpId(EmitContext& ctx) { + return ctx.OpLoad(ctx.U32[1], ctx.subgroup_id); +} + Id EmitLaneId(EmitContext& ctx) { return ctx.OpLoad(ctx.U32[1], ctx.subgroup_local_invocation_id); } diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp index 9ce87add..f7b30052 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp @@ -49,7 +49,7 @@ EmitContext::EmitContext(const Profile& profile_, IR::Program& program, u32& bin DefineInterfaces(program); DefineBuffers(info); DefineImagesAndSamplers(info); - DefineSharedMemory(info); + DefineSharedMemory(); } EmitContext::~EmitContext() = default; @@ -86,6 +86,7 @@ void EmitContext::DefineArithmeticTypes() { F32[1] = Name(TypeFloat(32), "f32_id"); S32[1] = Name(TypeSInt(32), "i32_id"); U32[1] = Name(TypeUInt(32), "u32_id"); + U64 = Name(TypeUInt(64), "u64_id"); for (u32 i = 2; i <= 4; i++) { if (info.uses_fp16) { @@ -126,6 +127,7 @@ Id GetAttributeType(EmitContext& ctx, AmdGpu::NumberFormat fmt) { case AmdGpu::NumberFormat::Float: case AmdGpu::NumberFormat::Unorm: case AmdGpu::NumberFormat::Snorm: + case AmdGpu::NumberFormat::SnormNz: return ctx.F32[4]; case AmdGpu::NumberFormat::Sint: return ctx.S32[4]; @@ -146,6 +148,7 @@ EmitContext::SpirvAttribute EmitContext::GetAttributeInfo(AmdGpu::NumberFormat f case AmdGpu::NumberFormat::Float: case AmdGpu::NumberFormat::Unorm: case AmdGpu::NumberFormat::Snorm: + case AmdGpu::NumberFormat::SnormNz: return {id, input_f32, F32[1], 4}; case AmdGpu::NumberFormat::Uint: return {id, input_u32, U32[1], 4}; @@ -204,7 +207,9 @@ void EmitContext::DefineInputs(const Info& info) { : 1; // Note that we pass index rather than Id input_params[input.binding] = { - rate_idx, input_u32, U32[1], input.num_components, input.instance_data_buf, + rate_idx, input_u32, + U32[1], input.num_components, + false, input.instance_data_buf, }; } else { Id id{DefineInput(type, input.binding)}; @@ -220,19 +225,18 @@ void EmitContext::DefineInputs(const Info& info) { break; } case Stage::Fragment: - if (info.uses_group_quad) { - subgroup_local_invocation_id = DefineVariable( - U32[1], spv::BuiltIn::SubgroupLocalInvocationId, spv::StorageClass::Input); - Decorate(subgroup_local_invocation_id, spv::Decoration::Flat); - } + subgroup_id = DefineVariable(U32[1], spv::BuiltIn::SubgroupId, spv::StorageClass::Input); + subgroup_local_invocation_id = DefineVariable( + U32[1], spv::BuiltIn::SubgroupLocalInvocationId, spv::StorageClass::Input); + Decorate(subgroup_local_invocation_id, spv::Decoration::Flat); frag_coord = DefineVariable(F32[4], spv::BuiltIn::FragCoord, spv::StorageClass::Input); frag_depth = DefineVariable(F32[1], spv::BuiltIn::FragDepth, spv::StorageClass::Output); front_facing = DefineVariable(U1[1], spv::BuiltIn::FrontFacing, spv::StorageClass::Input); for (const auto& input : info.ps_inputs) { const u32 semantic = input.param_index; if (input.is_default) { - input_params[semantic] = {MakeDefaultValue(*this, input.default_value), input_f32, - F32[1]}; + input_params[semantic] = {MakeDefaultValue(*this, input.default_value), F32[1], + F32[1], 4, true}; continue; } const IR::Attribute param{IR::Attribute::Param0 + input.param_index}; @@ -392,7 +396,16 @@ spv::ImageFormat GetFormat(const AmdGpu::Image& image) { image.GetNumberFmt() == AmdGpu::NumberFormat::Uint) { return spv::ImageFormat::Rgba8ui; } - UNREACHABLE(); + if (image.GetDataFmt() == AmdGpu::DataFormat::Format10_11_11 && + image.GetNumberFmt() == AmdGpu::NumberFormat::Float) { + return spv::ImageFormat::R11fG11fB10f; + } + if (image.GetDataFmt() == AmdGpu::DataFormat::Format32_32_32_32 && + image.GetNumberFmt() == AmdGpu::NumberFormat::Float) { + return spv::ImageFormat::Rgba32f; + } + UNREACHABLE_MSG("Unknown storage format data_format={}, num_format={}", image.GetDataFmt(), + image.GetNumberFmt()); } Id ImageType(EmitContext& ctx, const ImageResource& desc, Id sampled_type) { @@ -412,8 +425,6 @@ Id ImageType(EmitContext& ctx, const ImageResource& desc, Id sampled_type) { return ctx.TypeImage(sampled_type, spv::Dim::Dim3D, false, false, false, sampled, format); case AmdGpu::ImageType::Cube: return ctx.TypeImage(sampled_type, spv::Dim::Cube, false, false, false, sampled, format); - case AmdGpu::ImageType::Buffer: - throw NotImplementedException("Image buffer"); default: break; } @@ -471,10 +482,14 @@ void EmitContext::DefineImagesAndSamplers(const Info& info) { } } -void EmitContext::DefineSharedMemory(const Info& info) { - if (info.shared_memory_size == 0) { +void EmitContext::DefineSharedMemory() { + static constexpr size_t DefaultSharedMemSize = 16_KB; + if (!info.uses_shared) { return; } + if (info.shared_memory_size == 0) { + info.shared_memory_size = DefaultSharedMemSize; + } const auto make{[&](Id element_type, u32 element_size) { const u32 num_elements{Common::DivCeil(info.shared_memory_size, element_size)}; const Id array_type{TypeArray(element_type, ConstU32(num_elements))}; diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.h b/src/shader_recompiler/backend/spirv/spirv_emit_context.h index fc678344..34c13d3f 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.h +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.h @@ -180,6 +180,7 @@ public: Id workgroup_id{}; Id local_invocation_id{}; + Id subgroup_id{}; Id subgroup_local_invocation_id{}; Id image_u32{}; @@ -219,6 +220,7 @@ public: Id pointer_type; Id component_type; u32 num_components; + bool is_default{}; s32 buffer_handle{-1}; }; std::array input_params{}; @@ -231,7 +233,7 @@ private: void DefineOutputs(const Info& info); void DefineBuffers(const Info& info); void DefineImagesAndSamplers(const Info& info); - void DefineSharedMemory(const Info& info); + void DefineSharedMemory(); SpirvAttribute GetAttributeInfo(AmdGpu::NumberFormat fmt, Id id); }; diff --git a/src/shader_recompiler/frontend/format.cpp b/src/shader_recompiler/frontend/format.cpp index 634566fa..8df3ac36 100644 --- a/src/shader_recompiler/frontend/format.cpp +++ b/src/shader_recompiler/frontend/format.cpp @@ -1479,7 +1479,7 @@ constexpr std::array InstructionFormatVOP3 = {{ {InstClass::VectorFpGraph32, InstCategory::VectorALU, 3, 1, ScalarType::Float32, ScalarType::Float32}, // 337 = V_MIN3_F32 - {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Float32, + {InstClass::VectorFpArith32, InstCategory::VectorALU, 3, 1, ScalarType::Float32, ScalarType::Float32}, // 338 = V_MIN3_I32 {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Sint32, @@ -1488,7 +1488,7 @@ constexpr std::array InstructionFormatVOP3 = {{ {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Uint32, ScalarType::Uint32}, // 340 = V_MAX3_F32 - {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Float32, + {InstClass::VectorFpArith32, InstCategory::VectorALU, 3, 1, ScalarType::Float32, ScalarType::Float32}, // 341 = V_MAX3_I32 {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Sint32, @@ -1497,7 +1497,7 @@ constexpr std::array InstructionFormatVOP3 = {{ {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Uint32, ScalarType::Uint32}, // 343 = V_MED3_F32 - {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Float32, + {InstClass::VectorFpArith32, InstCategory::VectorALU, 3, 1, ScalarType::Float32, ScalarType::Float32}, // 344 = V_MED3_I32 {InstClass::VectorIntArith32, InstCategory::VectorALU, 3, 1, ScalarType::Sint32, @@ -2779,11 +2779,9 @@ constexpr std::array InstructionFormatDS = {{ // 60 = DS_READ_U16 {InstClass::DsIdxRd, InstCategory::DataShare, 3, 1, ScalarType::Uint32, ScalarType::Uint32}, // 61 = DS_CONSUME - {InstClass::DsAppendCon, InstCategory::DataShare, 3, 1, ScalarType::Undefined, - ScalarType::Undefined}, + {InstClass::DsAppendCon, InstCategory::DataShare, 3, 1, ScalarType::Uint32, ScalarType::Uint32}, // 62 = DS_APPEND - {InstClass::DsAppendCon, InstCategory::DataShare, 3, 1, ScalarType::Undefined, - ScalarType::Undefined}, + {InstClass::DsAppendCon, InstCategory::DataShare, 3, 1, ScalarType::Uint32, ScalarType::Uint32}, // 63 = DS_ORDERED_COUNT {InstClass::GdsOrdCnt, InstCategory::DataShare, 3, 1, ScalarType::Undefined, ScalarType::Undefined}, diff --git a/src/shader_recompiler/frontend/instruction.h b/src/shader_recompiler/frontend/instruction.h index d1d10efb..f83f43db 100644 --- a/src/shader_recompiler/frontend/instruction.h +++ b/src/shader_recompiler/frontend/instruction.h @@ -76,11 +76,11 @@ struct SMRD { }; struct InstControlSOPK { - BitField<0, 16, u32> simm; + s16 simm; }; struct InstControlSOPP { - BitField<0, 16, u32> simm; + s16 simm; }; struct InstControlVOP3 { diff --git a/src/shader_recompiler/frontend/structured_control_flow.cpp b/src/shader_recompiler/frontend/structured_control_flow.cpp index 346f00aa..c8d73858 100644 --- a/src/shader_recompiler/frontend/structured_control_flow.cpp +++ b/src/shader_recompiler/frontend/structured_control_flow.cpp @@ -600,13 +600,13 @@ public: TranslatePass(ObjectPool& inst_pool_, ObjectPool& block_pool_, ObjectPool& stmt_pool_, Statement& root_stmt, IR::AbstractSyntaxList& syntax_list_, std::span inst_list_, - Info& info_) + Info& info_, const Profile& profile_) : stmt_pool{stmt_pool_}, inst_pool{inst_pool_}, block_pool{block_pool_}, - syntax_list{syntax_list_}, inst_list{inst_list_}, info{info_} { + syntax_list{syntax_list_}, inst_list{inst_list_}, info{info_}, profile{profile_} { Visit(root_stmt, nullptr, nullptr); IR::Block& first_block{*syntax_list.front().data.block}; - Translator{&first_block, info}.EmitPrologue(); + Translator{&first_block, info, profile}.EmitPrologue(); } private: @@ -635,7 +635,7 @@ private: const u32 start = stmt.block->begin_index; const u32 size = stmt.block->end_index - start + 1; Translate(current_block, stmt.block->begin, inst_list.subspan(start, size), - info); + info, profile); } break; } @@ -815,16 +815,18 @@ private: const Block dummy_flow_block{.is_dummy = true}; std::span inst_list; Info& info; + const Profile& profile; }; } // Anonymous namespace IR::AbstractSyntaxList BuildASL(ObjectPool& inst_pool, ObjectPool& block_pool, - CFG& cfg, Info& info) { + CFG& cfg, Info& info, const Profile& profile) { ObjectPool stmt_pool{64}; GotoPass goto_pass{cfg, stmt_pool}; Statement& root{goto_pass.RootStatement()}; IR::AbstractSyntaxList syntax_list; - TranslatePass{inst_pool, block_pool, stmt_pool, root, syntax_list, cfg.inst_list, info}; + TranslatePass{inst_pool, block_pool, stmt_pool, root, + syntax_list, cfg.inst_list, info, profile}; ASSERT_MSG(!info.translation_failed, "Shader translation has failed"); return syntax_list; } diff --git a/src/shader_recompiler/frontend/structured_control_flow.h b/src/shader_recompiler/frontend/structured_control_flow.h index 09814349..da4ef1ff 100644 --- a/src/shader_recompiler/frontend/structured_control_flow.h +++ b/src/shader_recompiler/frontend/structured_control_flow.h @@ -11,12 +11,13 @@ namespace Shader { struct Info; -} +struct Profile; +} // namespace Shader namespace Shader::Gcn { [[nodiscard]] IR::AbstractSyntaxList BuildASL(ObjectPool& inst_pool, ObjectPool& block_pool, CFG& cfg, - Info& info); + Info& info, const Profile& profile); } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/data_share.cpp b/src/shader_recompiler/frontend/translate/data_share.cpp index c5d9f0ec..14837166 100644 --- a/src/shader_recompiler/frontend/translate/data_share.cpp +++ b/src/shader_recompiler/frontend/translate/data_share.cpp @@ -5,6 +5,31 @@ namespace Shader::Gcn { +void Translator::EmitDataShare(const GcnInst& inst) { + switch (inst.opcode) { + case Opcode::DS_SWIZZLE_B32: + return DS_SWIZZLE_B32(inst); + case Opcode::DS_READ_B32: + return DS_READ(32, false, false, inst); + case Opcode::DS_READ_B64: + return DS_READ(64, false, false, inst); + case Opcode::DS_READ2_B32: + return DS_READ(32, false, true, inst); + case Opcode::DS_READ2_B64: + return DS_READ(64, false, true, inst); + case Opcode::DS_WRITE_B32: + return DS_WRITE(32, false, false, inst); + case Opcode::DS_WRITE_B64: + return DS_WRITE(64, false, false, inst); + case Opcode::DS_WRITE2_B32: + return DS_WRITE(32, false, true, inst); + case Opcode::DS_WRITE2_B64: + return DS_WRITE(64, false, true, inst); + default: + LogMissingOpcode(inst); + } +} + void Translator::DS_SWIZZLE_B32(const GcnInst& inst) { const u8 offset0 = inst.control.ds.offset0; const u8 offset1 = inst.control.ds.offset1; @@ -20,14 +45,25 @@ void Translator::DS_SWIZZLE_B32(const GcnInst& inst) { void Translator::DS_READ(int bit_size, bool is_signed, bool is_pair, const GcnInst& inst) { const IR::U32 addr{ir.GetVectorReg(IR::VectorReg(inst.src[0].code))}; - const IR::VectorReg dst_reg{inst.dst[0].code}; + IR::VectorReg dst_reg{inst.dst[0].code}; if (is_pair) { - // Pair loads are either 32 or 64-bit. We assume 32-bit for now. - ASSERT(bit_size == 32); + // Pair loads are either 32 or 64-bit const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); - ir.SetVectorReg(dst_reg, IR::U32{ir.LoadShared(32, is_signed, addr0)}); + const IR::Value data0 = ir.LoadShared(bit_size, is_signed, addr0); + if (bit_size == 32) { + ir.SetVectorReg(dst_reg++, IR::U32{data0}); + } else { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data0, 0)}); + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data0, 1)}); + } const IR::U32 addr1 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset1))); - ir.SetVectorReg(dst_reg + 1, IR::U32{ir.LoadShared(32, is_signed, addr1)}); + const IR::Value data1 = ir.LoadShared(bit_size, is_signed, addr1); + if (bit_size == 32) { + ir.SetVectorReg(dst_reg++, IR::U32{data1}); + } else { + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data1, 0)}); + ir.SetVectorReg(dst_reg++, IR::U32{ir.CompositeExtract(data1, 1)}); + } } else if (bit_size == 64) { const IR::Value data = ir.LoadShared(bit_size, is_signed, addr); ir.SetVectorReg(dst_reg, IR::U32{ir.CompositeExtract(data, 0)}); @@ -43,11 +79,22 @@ void Translator::DS_WRITE(int bit_size, bool is_signed, bool is_pair, const GcnI const IR::VectorReg data0{inst.src[1].code}; const IR::VectorReg data1{inst.src[2].code}; if (is_pair) { - ASSERT(bit_size == 32); const IR::U32 addr0 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset0))); - ir.WriteShared(32, ir.GetVectorReg(data0), addr0); + if (bit_size == 32) { + ir.WriteShared(32, ir.GetVectorReg(data0), addr0); + } else { + ir.WriteShared( + 64, ir.CompositeConstruct(ir.GetVectorReg(data0), ir.GetVectorReg(data0 + 1)), + addr0); + } const IR::U32 addr1 = ir.IAdd(addr, ir.Imm32(u32(inst.control.ds.offset1))); - ir.WriteShared(32, ir.GetVectorReg(data1), addr1); + if (bit_size == 32) { + ir.WriteShared(32, ir.GetVectorReg(data1), addr1); + } else { + ir.WriteShared( + 64, ir.CompositeConstruct(ir.GetVectorReg(data1), ir.GetVectorReg(data1 + 1)), + addr1); + } } else if (bit_size == 64) { const IR::Value data = ir.CompositeConstruct(ir.GetVectorReg(data0), ir.GetVectorReg(data0 + 1)); @@ -62,7 +109,18 @@ void Translator::S_BARRIER() { } void Translator::V_READFIRSTLANE_B32(const GcnInst& inst) { - UNREACHABLE(); + ASSERT(info.stage != Stage::Compute); + SetDst(inst.dst[0], GetSrc(inst.src[0])); +} + +void Translator::V_READLANE_B32(const GcnInst& inst) { + ASSERT(info.stage != Stage::Compute); + SetDst(inst.dst[0], GetSrc(inst.src[0])); +} + +void Translator::V_WRITELANE_B32(const GcnInst& inst) { + ASSERT(info.stage != Stage::Compute); + SetDst(inst.dst[0], GetSrc(inst.src[0])); } } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/export.cpp b/src/shader_recompiler/frontend/translate/export.cpp index 51840537..889de21b 100644 --- a/src/shader_recompiler/frontend/translate/export.cpp +++ b/src/shader_recompiler/frontend/translate/export.cpp @@ -6,7 +6,7 @@ namespace Shader::Gcn { -void Translator::EXP(const GcnInst& inst) { +void Translator::EmitExport(const GcnInst& inst) { if (ir.block->has_multiple_predecessors && info.stage == Stage::Fragment) { LOG_WARNING(Render_Recompiler, "An ambiguous export appeared in translation"); ir.Discard(ir.LogicalNot(ir.GetExec())); diff --git a/src/shader_recompiler/frontend/translate/scalar_alu.cpp b/src/shader_recompiler/frontend/translate/scalar_alu.cpp index a20e91ca..795b148d 100644 --- a/src/shader_recompiler/frontend/translate/scalar_alu.cpp +++ b/src/shader_recompiler/frontend/translate/scalar_alu.cpp @@ -5,8 +5,102 @@ namespace Shader::Gcn { +void Translator::EmitScalarAlu(const GcnInst& inst) { + switch (inst.opcode) { + case Opcode::S_MOVK_I32: + return S_MOVK(inst); + case Opcode::S_MOV_B32: + return S_MOV(inst); + case Opcode::S_MUL_I32: + return S_MUL_I32(inst); + case Opcode::S_AND_SAVEEXEC_B64: + return S_AND_SAVEEXEC_B64(inst); + case Opcode::S_MOV_B64: + return S_MOV_B64(inst); + case Opcode::S_CMP_LT_U32: + return S_CMP(ConditionOp::LT, false, inst); + case Opcode::S_CMP_LE_U32: + return S_CMP(ConditionOp::LE, false, inst); + case Opcode::S_CMP_LG_U32: + return S_CMP(ConditionOp::LG, false, inst); + case Opcode::S_CMP_LT_I32: + return S_CMP(ConditionOp::LT, true, inst); + case Opcode::S_CMP_LG_I32: + return S_CMP(ConditionOp::LG, true, inst); + case Opcode::S_CMP_GT_I32: + return S_CMP(ConditionOp::GT, true, inst); + case Opcode::S_CMP_GE_I32: + return S_CMP(ConditionOp::GE, true, inst); + case Opcode::S_CMP_EQ_I32: + return S_CMP(ConditionOp::EQ, true, inst); + case Opcode::S_CMP_EQ_U32: + return S_CMP(ConditionOp::EQ, false, inst); + case Opcode::S_CMP_GE_U32: + return S_CMP(ConditionOp::GE, false, inst); + case Opcode::S_CMP_GT_U32: + return S_CMP(ConditionOp::GT, false, inst); + case Opcode::S_OR_B64: + return S_OR_B64(NegateMode::None, false, inst); + case Opcode::S_NOR_B64: + return S_OR_B64(NegateMode::Result, false, inst); + case Opcode::S_XOR_B64: + return S_OR_B64(NegateMode::None, true, inst); + case Opcode::S_ORN2_B64: + return S_OR_B64(NegateMode::Src1, false, inst); + case Opcode::S_AND_B64: + return S_AND_B64(NegateMode::None, inst); + case Opcode::S_NAND_B64: + return S_AND_B64(NegateMode::Result, inst); + case Opcode::S_ANDN2_B64: + return S_AND_B64(NegateMode::Src1, inst); + case Opcode::S_NOT_B64: + return S_NOT_B64(inst); + case Opcode::S_ADD_I32: + return S_ADD_I32(inst); + case Opcode::S_AND_B32: + return S_AND_B32(inst); + case Opcode::S_ASHR_I32: + return S_ASHR_I32(inst); + case Opcode::S_OR_B32: + return S_OR_B32(inst); + case Opcode::S_LSHL_B32: + return S_LSHL_B32(inst); + case Opcode::S_LSHR_B32: + return S_LSHR_B32(inst); + case Opcode::S_CSELECT_B32: + return S_CSELECT_B32(inst); + case Opcode::S_CSELECT_B64: + return S_CSELECT_B64(inst); + case Opcode::S_BFE_U32: + return S_BFE_U32(inst); + case Opcode::S_BFM_B32: + return S_BFM_B32(inst); + case Opcode::S_BREV_B32: + return S_BREV_B32(inst); + case Opcode::S_ADD_U32: + return S_ADD_U32(inst); + case Opcode::S_ADDC_U32: + return S_ADDC_U32(inst); + case Opcode::S_ADDK_I32: + return S_ADDK_I32(inst); + case Opcode::S_MULK_I32: + return S_MULK_I32(inst); + case Opcode::S_SUB_U32: + case Opcode::S_SUB_I32: + return S_SUB_U32(inst); + case Opcode::S_MIN_U32: + return S_MIN_U32(inst); + case Opcode::S_MAX_U32: + return S_MAX_U32(inst); + case Opcode::S_WQM_B64: + break; + default: + LogMissingOpcode(inst); + } +} + void Translator::S_MOVK(const GcnInst& inst) { - const auto simm16 = inst.control.sopk.simm.Value(); + const auto simm16 = inst.control.sopk.simm; if (simm16 & (1 << 15)) { // TODO: need to verify the case of imm sign extension UNREACHABLE(); @@ -14,6 +108,16 @@ void Translator::S_MOVK(const GcnInst& inst) { SetDst(inst.dst[0], ir.Imm32(simm16)); } +void Translator::S_ADDK_I32(const GcnInst& inst) { + const s32 simm16 = inst.control.sopk.simm; + SetDst(inst.dst[0], ir.IAdd(GetSrc(inst.dst[0]), ir.Imm32(simm16))); +} + +void Translator::S_MULK_I32(const GcnInst& inst) { + const s32 simm16 = inst.control.sopk.simm; + SetDst(inst.dst[0], ir.IMul(GetSrc(inst.dst[0]), ir.Imm32(simm16))); +} + void Translator::S_MOV(const GcnInst& inst) { SetDst(inst.dst[0], GetSrc(inst.src[0])); } @@ -62,15 +166,10 @@ void Translator::S_AND_SAVEEXEC_B64(const GcnInst& inst) { } }(); - // Mark destination SPGR as an EXEC context. This means we will use 1-bit - // IR instruction whenever it's loaded. switch (inst.dst[0].field) { - case OperandField::ScalarGPR: { - const u32 reg = inst.dst[0].code; - exec_contexts[reg] = true; - ir.SetThreadBitScalarReg(IR::ScalarReg(reg), exec); + case OperandField::ScalarGPR: + ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), exec); break; - } case OperandField::VccLo: ir.SetVcc(exec); break; @@ -79,27 +178,37 @@ void Translator::S_AND_SAVEEXEC_B64(const GcnInst& inst) { } // Update EXEC. - ir.SetExec(ir.LogicalAnd(exec, src)); + const IR::U1 result = ir.LogicalAnd(exec, src); + ir.SetExec(result); + ir.SetScc(result); } void Translator::S_MOV_B64(const GcnInst& inst) { - // TODO: Using VCC as EXEC context. - if (inst.src[0].field == OperandField::VccLo || inst.dst[0].field == OperandField::VccLo) { - return; - } - if (inst.dst[0].field == OperandField::ScalarGPR && inst.src[0].field == OperandField::ExecLo) { - // Exec context push - exec_contexts[inst.dst[0].code] = true; - ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), ir.GetExec()); - } else if (inst.dst[0].field == OperandField::ExecLo && - inst.src[0].field == OperandField::ScalarGPR) { - // Exec context pop - exec_contexts[inst.src[0].code] = false; - ir.SetExec(ir.GetThreadBitScalarReg(IR::ScalarReg(inst.src[0].code))); - } else if (inst.dst[0].field == OperandField::ExecLo && - inst.src[0].field == OperandField::ConstZero) { - ir.SetExec(ir.Imm1(false)); - } else { + const IR::U1 src = [&] { + switch (inst.src[0].field) { + case OperandField::VccLo: + return ir.GetVcc(); + case OperandField::ExecLo: + return ir.GetExec(); + case OperandField::ScalarGPR: + return ir.GetThreadBitScalarReg(IR::ScalarReg(inst.src[0].code)); + case OperandField::ConstZero: + return ir.Imm1(false); + default: + UNREACHABLE(); + } + }(); + switch (inst.dst[0].field) { + case OperandField::ScalarGPR: + ir.SetThreadBitScalarReg(IR::ScalarReg(inst.dst[0].code), src); + break; + case OperandField::ExecLo: + ir.SetExec(src); + break; + case OperandField::VccLo: + ir.SetVcc(src); + break; + default: UNREACHABLE(); } } @@ -338,4 +447,20 @@ void Translator::S_ADDC_U32(const GcnInst& inst) { SetDst(inst.dst[0], ir.IAdd(ir.IAdd(src0, src1), ir.GetSccLo())); } +void Translator::S_MAX_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 result = ir.UMax(src0, src1); + SetDst(inst.dst[0], result); + ir.SetScc(ir.IEqual(result, src0)); +} + +void Translator::S_MIN_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 result = ir.UMin(src0, src1); + SetDst(inst.dst[0], result); + ir.SetScc(ir.IEqual(result, src0)); +} + } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/scalar_memory.cpp b/src/shader_recompiler/frontend/translate/scalar_memory.cpp index 3c80764c..29f2acc2 100644 --- a/src/shader_recompiler/frontend/translate/scalar_memory.cpp +++ b/src/shader_recompiler/frontend/translate/scalar_memory.cpp @@ -7,6 +7,29 @@ namespace Shader::Gcn { static constexpr u32 SQ_SRC_LITERAL = 0xFF; +void Translator::EmitScalarMemory(const GcnInst& inst) { + switch (inst.opcode) { + case Opcode::S_LOAD_DWORDX4: + return S_LOAD_DWORD(4, inst); + case Opcode::S_LOAD_DWORDX8: + return S_LOAD_DWORD(8, inst); + case Opcode::S_LOAD_DWORDX16: + return S_LOAD_DWORD(16, inst); + case Opcode::S_BUFFER_LOAD_DWORD: + return S_BUFFER_LOAD_DWORD(1, inst); + case Opcode::S_BUFFER_LOAD_DWORDX2: + return S_BUFFER_LOAD_DWORD(2, inst); + case Opcode::S_BUFFER_LOAD_DWORDX4: + return S_BUFFER_LOAD_DWORD(4, inst); + case Opcode::S_BUFFER_LOAD_DWORDX8: + return S_BUFFER_LOAD_DWORD(8, inst); + case Opcode::S_BUFFER_LOAD_DWORDX16: + return S_BUFFER_LOAD_DWORD(16, inst); + default: + LogMissingOpcode(inst); + } +} + void Translator::S_LOAD_DWORD(int num_dwords, const GcnInst& inst) { const auto& smrd = inst.control.smrd; const u32 dword_offset = [&] -> u32 { diff --git a/src/shader_recompiler/frontend/translate/translate.cpp b/src/shader_recompiler/frontend/translate/translate.cpp index c4c6e505..e8c2a31c 100644 --- a/src/shader_recompiler/frontend/translate/translate.cpp +++ b/src/shader_recompiler/frontend/translate/translate.cpp @@ -16,13 +16,10 @@ namespace Shader::Gcn { -std::array Translator::exec_contexts{}; - -Translator::Translator(IR::Block* block_, Info& info_) - : ir{*block_, block_->begin()}, info{info_} {} +Translator::Translator(IR::Block* block_, Info& info_, const Profile& profile_) + : ir{*block_, block_->begin()}, info{info_}, profile{profile_} {} void Translator::EmitPrologue() { - exec_contexts.fill(false); ir.Prologue(); ir.SetExec(ir.Imm1(true)); @@ -97,7 +94,7 @@ IR::U32F32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { } break; case OperandField::ConstZero: - if (force_flt) { + if (is_float) { value = ir.Imm32(0.f); } else { value = ir.Imm32(0U); @@ -112,14 +109,14 @@ IR::U32F32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { value = ir.Imm32(-s32(operand.code) + SignedConstIntNegMin - 1); break; case OperandField::LiteralConst: - if (force_flt) { + if (is_float) { value = ir.Imm32(std::bit_cast(operand.code)); } else { value = ir.Imm32(operand.code); } break; case OperandField::ConstFloatPos_1_0: - if (force_flt) { + if (is_float) { value = ir.Imm32(1.f); } else { value = ir.Imm32(std::bit_cast(1.f)); @@ -138,7 +135,11 @@ IR::U32F32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { value = ir.Imm32(-0.5f); break; case OperandField::ConstFloatNeg_1_0: - value = ir.Imm32(-1.0f); + if (is_float) { + value = ir.Imm32(-1.0f); + } else { + value = ir.Imm32(std::bit_cast(-1.0f)); + } break; case OperandField::ConstFloatNeg_2_0: value = ir.Imm32(-2.0f); @@ -160,6 +161,8 @@ IR::U32F32 Translator::GetSrc(const InstOperand& operand, bool force_flt) { value = ir.GetVccHi(); } break; + case OperandField::M0: + return m0_value; default: UNREACHABLE(); } @@ -336,6 +339,7 @@ void Translator::SetDst(const InstOperand& operand, const IR::U32F32& value) { case OperandField::VccHi: return ir.SetVccHi(result); case OperandField::M0: + m0_value = result; break; default: UNREACHABLE(); @@ -458,712 +462,84 @@ void Translator::EmitFetch(const GcnInst& inst) { } } -void Translate(IR::Block* block, u32 block_base, std::span inst_list, Info& info) { +void Translator::EmitFlowControl(u32 pc, const GcnInst& inst) { + switch (inst.opcode) { + case Opcode::S_BARRIER: + return S_BARRIER(); + case Opcode::S_TTRACEDATA: + LOG_WARNING(Render_Vulkan, "S_TTRACEDATA instruction!"); + return; + case Opcode::S_GETPC_B64: + return S_GETPC_B64(pc, inst); + case Opcode::S_WAITCNT: + case Opcode::S_NOP: + case Opcode::S_ENDPGM: + case Opcode::S_CBRANCH_EXECZ: + case Opcode::S_CBRANCH_SCC0: + case Opcode::S_CBRANCH_SCC1: + case Opcode::S_CBRANCH_VCCNZ: + case Opcode::S_CBRANCH_VCCZ: + case Opcode::S_BRANCH: + return; + default: + UNREACHABLE(); + } +} + +void Translator::LogMissingOpcode(const GcnInst& inst) { + const u32 opcode = u32(inst.opcode); + LOG_ERROR(Render_Recompiler, "Unknown opcode {} ({}, category = {})", + magic_enum::enum_name(inst.opcode), u32(inst.opcode), + magic_enum::enum_name(inst.category)); + info.translation_failed = true; +} + +void Translate(IR::Block* block, u32 pc, std::span inst_list, Info& info, + const Profile& profile) { if (inst_list.empty()) { return; } - Translator translator{block, info}; + Translator translator{block, info, profile}; for (const auto& inst : inst_list) { - block_base += inst.length; - switch (inst.opcode) { - case Opcode::S_MOVK_I32: - translator.S_MOVK(inst); - break; - case Opcode::S_MOV_B32: - translator.S_MOV(inst); - break; - case Opcode::S_MUL_I32: - translator.S_MUL_I32(inst); - break; - case Opcode::V_MAD_F32: - translator.V_MAD_F32(inst); - break; - case Opcode::V_MOV_B32: - translator.V_MOV(inst); - break; - case Opcode::V_MAC_F32: - translator.V_MAC_F32(inst); - break; - case Opcode::V_MUL_F32: - translator.V_MUL_F32(inst); - break; - case Opcode::V_AND_B32: - translator.V_AND_B32(inst); - break; - case Opcode::V_OR_B32: - translator.V_OR_B32(false, inst); - break; - case Opcode::V_XOR_B32: - translator.V_OR_B32(true, inst); - break; - case Opcode::V_LSHLREV_B32: - translator.V_LSHLREV_B32(inst); - break; - case Opcode::V_ADD_I32: - translator.V_ADD_I32(inst); - break; - case Opcode::V_ADDC_U32: - translator.V_ADDC_U32(inst); - break; - case Opcode::V_CVT_F32_I32: - translator.V_CVT_F32_I32(inst); - break; - case Opcode::V_CVT_F32_U32: - translator.V_CVT_F32_U32(inst); - break; - case Opcode::V_RCP_F32: - translator.V_RCP_F32(inst); - break; - case Opcode::S_SWAPPC_B64: + pc += inst.length; + + // Special case for emitting fetch shader. + if (inst.opcode == Opcode::S_SWAPPC_B64) { ASSERT(info.stage == Stage::Vertex); translator.EmitFetch(inst); - break; - case Opcode::S_WAITCNT: - break; - case Opcode::S_LOAD_DWORDX4: - translator.S_LOAD_DWORD(4, inst); - break; - case Opcode::S_LOAD_DWORDX8: - translator.S_LOAD_DWORD(8, inst); - break; - case Opcode::S_LOAD_DWORDX16: - translator.S_LOAD_DWORD(16, inst); - break; - case Opcode::S_BUFFER_LOAD_DWORD: - translator.S_BUFFER_LOAD_DWORD(1, inst); - break; - case Opcode::S_BUFFER_LOAD_DWORDX2: - translator.S_BUFFER_LOAD_DWORD(2, inst); - break; - case Opcode::S_BUFFER_LOAD_DWORDX4: - translator.S_BUFFER_LOAD_DWORD(4, inst); - break; - case Opcode::S_BUFFER_LOAD_DWORDX8: - translator.S_BUFFER_LOAD_DWORD(8, inst); - break; - case Opcode::S_BUFFER_LOAD_DWORDX16: - translator.S_BUFFER_LOAD_DWORD(16, inst); - break; - case Opcode::EXP: - translator.EXP(inst); - break; - case Opcode::V_INTERP_P2_F32: - translator.V_INTERP_P2_F32(inst); - break; - case Opcode::V_CVT_PKRTZ_F16_F32: - translator.V_CVT_PKRTZ_F16_F32(inst); - break; - case Opcode::V_CVT_F32_F16: - translator.V_CVT_F32_F16(inst); - break; - case Opcode::V_CVT_F32_UBYTE0: - translator.V_CVT_F32_UBYTE(0, inst); - break; - case Opcode::V_CVT_F32_UBYTE1: - translator.V_CVT_F32_UBYTE(1, inst); - break; - case Opcode::V_CVT_F32_UBYTE2: - translator.V_CVT_F32_UBYTE(2, inst); - break; - case Opcode::V_CVT_F32_UBYTE3: - translator.V_CVT_F32_UBYTE(3, inst); - break; - case Opcode::V_BFREV_B32: - translator.V_BFREV_B32(inst); - break; - case Opcode::V_LDEXP_F32: - translator.V_LDEXP_F32(inst); - break; - case Opcode::V_FRACT_F32: - translator.V_FRACT_F32(inst); - break; - case Opcode::V_ADD_F32: - translator.V_ADD_F32(inst); - break; - case Opcode::V_CVT_OFF_F32_I4: - translator.V_CVT_OFF_F32_I4(inst); - break; - case Opcode::V_MED3_F32: - translator.V_MED3_F32(inst); - break; - case Opcode::V_FLOOR_F32: - translator.V_FLOOR_F32(inst); - break; - case Opcode::V_SUB_F32: - translator.V_SUB_F32(inst); - break; - case Opcode::V_FMA_F32: - case Opcode::V_MADAK_F32: // Yes these can share the opcode - translator.V_FMA_F32(inst); - break; - case Opcode::IMAGE_SAMPLE_LZ_O: - case Opcode::IMAGE_SAMPLE_O: - case Opcode::IMAGE_SAMPLE_C: - case Opcode::IMAGE_SAMPLE_C_LZ: - case Opcode::IMAGE_SAMPLE_LZ: - case Opcode::IMAGE_SAMPLE: - case Opcode::IMAGE_SAMPLE_L: - case Opcode::IMAGE_SAMPLE_C_O: - case Opcode::IMAGE_SAMPLE_B: - case Opcode::IMAGE_SAMPLE_C_LZ_O: - translator.IMAGE_SAMPLE(inst); - break; - case Opcode::IMAGE_ATOMIC_ADD: - translator.IMAGE_ATOMIC(AtomicOp::Add, inst); - break; - case Opcode::IMAGE_ATOMIC_AND: - translator.IMAGE_ATOMIC(AtomicOp::And, inst); - break; - case Opcode::IMAGE_ATOMIC_OR: - translator.IMAGE_ATOMIC(AtomicOp::Or, inst); - break; - case Opcode::IMAGE_ATOMIC_XOR: - translator.IMAGE_ATOMIC(AtomicOp::Xor, inst); - break; - case Opcode::IMAGE_ATOMIC_UMAX: - translator.IMAGE_ATOMIC(AtomicOp::Umax, inst); - break; - case Opcode::IMAGE_ATOMIC_SMAX: - translator.IMAGE_ATOMIC(AtomicOp::Smax, inst); - break; - case Opcode::IMAGE_ATOMIC_UMIN: - translator.IMAGE_ATOMIC(AtomicOp::Umin, inst); - break; - case Opcode::IMAGE_ATOMIC_SMIN: - translator.IMAGE_ATOMIC(AtomicOp::Smin, inst); - break; - case Opcode::IMAGE_ATOMIC_INC: - translator.IMAGE_ATOMIC(AtomicOp::Inc, inst); - break; - case Opcode::IMAGE_ATOMIC_DEC: - translator.IMAGE_ATOMIC(AtomicOp::Dec, inst); - break; - case Opcode::IMAGE_GET_LOD: - translator.IMAGE_GET_LOD(inst); - break; - case Opcode::IMAGE_GATHER4_C: - case Opcode::IMAGE_GATHER4_LZ: - case Opcode::IMAGE_GATHER4_LZ_O: - translator.IMAGE_GATHER(inst); - break; - case Opcode::IMAGE_STORE: - translator.IMAGE_STORE(inst); - break; - case Opcode::IMAGE_LOAD_MIP: - translator.IMAGE_LOAD(true, inst); - break; - case Opcode::IMAGE_LOAD: - translator.IMAGE_LOAD(false, inst); - break; - case Opcode::V_MAD_U64_U32: - translator.V_MAD_U64_U32(inst); - break; - case Opcode::V_CMP_GE_I32: - translator.V_CMP_U32(ConditionOp::GE, true, false, inst); - break; - case Opcode::V_CMP_EQ_I32: - translator.V_CMP_U32(ConditionOp::EQ, true, false, inst); - break; - case Opcode::V_CMP_LE_I32: - translator.V_CMP_U32(ConditionOp::LE, true, false, inst); - break; - case Opcode::V_CMP_NE_I32: - translator.V_CMP_U32(ConditionOp::LG, true, false, inst); - break; - case Opcode::V_CMP_NE_U32: - translator.V_CMP_U32(ConditionOp::LG, false, false, inst); - break; - case Opcode::V_CMP_EQ_U32: - translator.V_CMP_U32(ConditionOp::EQ, false, false, inst); - break; - case Opcode::V_CMP_F_U32: - translator.V_CMP_U32(ConditionOp::F, false, false, inst); - break; - case Opcode::V_CMP_LT_U32: - translator.V_CMP_U32(ConditionOp::LT, false, false, inst); - break; - case Opcode::V_CMP_GT_U32: - translator.V_CMP_U32(ConditionOp::GT, false, false, inst); - break; - case Opcode::V_CMP_GE_U32: - translator.V_CMP_U32(ConditionOp::GE, false, false, inst); - break; - case Opcode::V_CMP_TRU_U32: - translator.V_CMP_U32(ConditionOp::TRU, false, false, inst); - break; - case Opcode::V_CMP_NEQ_F32: - translator.V_CMP_F32(ConditionOp::LG, false, inst); - break; - case Opcode::V_CMP_F_F32: - translator.V_CMP_F32(ConditionOp::F, false, inst); - break; - case Opcode::V_CMP_LT_F32: - translator.V_CMP_F32(ConditionOp::LT, false, inst); - break; - case Opcode::V_CMP_EQ_F32: - translator.V_CMP_F32(ConditionOp::EQ, false, inst); - break; - case Opcode::V_CMP_LE_F32: - translator.V_CMP_F32(ConditionOp::LE, false, inst); - break; - case Opcode::V_CMP_GT_F32: - translator.V_CMP_F32(ConditionOp::GT, false, inst); - break; - case Opcode::V_CMP_LG_F32: - translator.V_CMP_F32(ConditionOp::LG, false, inst); - break; - case Opcode::V_CMP_GE_F32: - translator.V_CMP_F32(ConditionOp::GE, false, inst); - break; - case Opcode::V_CMP_NLE_F32: - translator.V_CMP_F32(ConditionOp::GT, false, inst); - break; - case Opcode::V_CMP_NLT_F32: - translator.V_CMP_F32(ConditionOp::GE, false, inst); - break; - case Opcode::V_CMP_NGT_F32: - translator.V_CMP_F32(ConditionOp::LE, false, inst); - break; - case Opcode::V_CMP_NGE_F32: - translator.V_CMP_F32(ConditionOp::LT, false, inst); - break; - case Opcode::S_CMP_LT_U32: - translator.S_CMP(ConditionOp::LT, false, inst); - break; - case Opcode::S_CMP_LE_U32: - translator.S_CMP(ConditionOp::LE, false, inst); - break; - case Opcode::S_CMP_LG_U32: - translator.S_CMP(ConditionOp::LG, false, inst); - break; - case Opcode::S_CMP_LT_I32: - translator.S_CMP(ConditionOp::LT, true, inst); - break; - case Opcode::S_CMP_LG_I32: - translator.S_CMP(ConditionOp::LG, true, inst); - break; - case Opcode::S_CMP_GT_I32: - translator.S_CMP(ConditionOp::GT, true, inst); - break; - case Opcode::S_CMP_GE_I32: - translator.S_CMP(ConditionOp::GE, true, inst); - break; - case Opcode::S_CMP_EQ_I32: - translator.S_CMP(ConditionOp::EQ, true, inst); - break; - case Opcode::S_CMP_EQ_U32: - translator.S_CMP(ConditionOp::EQ, false, inst); - break; - case Opcode::S_LSHL_B32: - translator.S_LSHL_B32(inst); - break; - case Opcode::V_CNDMASK_B32: - translator.V_CNDMASK_B32(inst); - break; - case Opcode::TBUFFER_LOAD_FORMAT_X: - translator.BUFFER_LOAD_FORMAT(1, true, true, inst); - break; - case Opcode::TBUFFER_LOAD_FORMAT_XY: - translator.BUFFER_LOAD_FORMAT(2, true, true, inst); - break; - case Opcode::TBUFFER_LOAD_FORMAT_XYZ: - translator.BUFFER_LOAD_FORMAT(3, true, true, inst); - break; - case Opcode::TBUFFER_LOAD_FORMAT_XYZW: - translator.BUFFER_LOAD_FORMAT(4, true, true, inst); - break; - case Opcode::BUFFER_LOAD_FORMAT_X: - translator.BUFFER_LOAD_FORMAT(1, false, true, inst); - break; - case Opcode::BUFFER_LOAD_FORMAT_XY: - translator.BUFFER_LOAD_FORMAT(2, false, true, inst); - break; - case Opcode::BUFFER_LOAD_FORMAT_XYZ: - translator.BUFFER_LOAD_FORMAT(3, false, true, inst); - break; - case Opcode::BUFFER_LOAD_FORMAT_XYZW: - translator.BUFFER_LOAD_FORMAT(4, false, true, inst); - break; - case Opcode::BUFFER_LOAD_DWORD: - translator.BUFFER_LOAD_FORMAT(1, false, false, inst); - break; - case Opcode::BUFFER_LOAD_DWORDX2: - translator.BUFFER_LOAD_FORMAT(2, false, false, inst); - break; - case Opcode::BUFFER_LOAD_DWORDX3: - translator.BUFFER_LOAD_FORMAT(3, false, false, inst); - break; - case Opcode::BUFFER_LOAD_DWORDX4: - translator.BUFFER_LOAD_FORMAT(4, false, false, inst); - break; - case Opcode::BUFFER_STORE_FORMAT_X: - case Opcode::BUFFER_STORE_DWORD: - translator.BUFFER_STORE_FORMAT(1, false, inst); - break; - case Opcode::BUFFER_STORE_DWORDX2: - translator.BUFFER_STORE_FORMAT(2, false, inst); - break; - case Opcode::BUFFER_STORE_DWORDX3: - translator.BUFFER_STORE_FORMAT(3, false, inst); - break; - case Opcode::BUFFER_STORE_FORMAT_XYZW: - case Opcode::BUFFER_STORE_DWORDX4: - translator.BUFFER_STORE_FORMAT(4, false, inst); - break; - case Opcode::V_MAX_F32: - translator.V_MAX_F32(inst); - break; - case Opcode::V_MAX_I32: - translator.V_MAX_U32(true, inst); - break; - case Opcode::V_MAX_U32: - translator.V_MAX_U32(false, inst); - break; - case Opcode::V_NOT_B32: - translator.V_NOT_B32(inst); - break; - case Opcode::V_RSQ_F32: - translator.V_RSQ_F32(inst); - break; - case Opcode::S_ANDN2_B64: - translator.S_AND_B64(NegateMode::Src1, inst); - break; - case Opcode::S_ORN2_B64: - translator.S_OR_B64(NegateMode::Src1, false, inst); - break; - case Opcode::V_SIN_F32: - translator.V_SIN_F32(inst); - break; - case Opcode::V_COS_F32: - translator.V_COS_F32(inst); - break; - case Opcode::V_LOG_F32: - translator.V_LOG_F32(inst); - break; - case Opcode::V_EXP_F32: - translator.V_EXP_F32(inst); - break; - case Opcode::V_SQRT_F32: - translator.V_SQRT_F32(inst); - break; - case Opcode::V_MIN_F32: - translator.V_MIN_F32(inst); - break; - case Opcode::V_MIN_I32: - translator.V_MIN_I32(inst); - break; - case Opcode::V_MIN3_F32: - translator.V_MIN3_F32(inst); - break; - case Opcode::V_MIN_LEGACY_F32: - translator.V_MIN_F32(inst, true); - break; - case Opcode::V_MADMK_F32: - translator.V_MADMK_F32(inst); - break; - case Opcode::V_CUBEMA_F32: - translator.V_CUBEMA_F32(inst); - break; - case Opcode::V_CUBESC_F32: - translator.V_CUBESC_F32(inst); - break; - case Opcode::V_CUBETC_F32: - translator.V_CUBETC_F32(inst); - break; - case Opcode::V_CUBEID_F32: - translator.V_CUBEID_F32(inst); - break; - case Opcode::V_CVT_U32_F32: - translator.V_CVT_U32_F32(inst); - break; - case Opcode::V_CVT_I32_F32: - translator.V_CVT_I32_F32(inst); - break; - case Opcode::V_CVT_FLR_I32_F32: - translator.V_CVT_FLR_I32_F32(inst); - break; - case Opcode::V_SUBREV_F32: - translator.V_SUBREV_F32(inst); - break; - case Opcode::S_AND_SAVEEXEC_B64: - translator.S_AND_SAVEEXEC_B64(inst); - break; - case Opcode::S_MOV_B64: - translator.S_MOV_B64(inst); - break; - case Opcode::V_SUBREV_I32: - translator.V_SUBREV_I32(inst); - break; + continue; + } - case Opcode::V_CMPX_F_F32: - translator.V_CMP_F32(ConditionOp::F, true, inst); + // Emit instructions for each category. + switch (inst.category) { + case InstCategory::DataShare: + translator.EmitDataShare(inst); break; - case Opcode::V_CMPX_LT_F32: - translator.V_CMP_F32(ConditionOp::LT, true, inst); + case InstCategory::VectorInterpolation: + translator.EmitVectorInterpolation(inst); break; - case Opcode::V_CMPX_EQ_F32: - translator.V_CMP_F32(ConditionOp::EQ, true, inst); + case InstCategory::ScalarMemory: + translator.EmitScalarMemory(inst); break; - case Opcode::V_CMPX_LE_F32: - translator.V_CMP_F32(ConditionOp::LE, true, inst); + case InstCategory::VectorMemory: + translator.EmitVectorMemory(inst); break; - case Opcode::V_CMPX_GT_F32: - translator.V_CMP_F32(ConditionOp::GT, true, inst); + case InstCategory::Export: + translator.EmitExport(inst); break; - case Opcode::V_CMPX_LG_F32: - translator.V_CMP_F32(ConditionOp::LG, true, inst); + case InstCategory::FlowControl: + translator.EmitFlowControl(pc, inst); break; - case Opcode::V_CMPX_GE_F32: - translator.V_CMP_F32(ConditionOp::GE, true, inst); + case InstCategory::ScalarALU: + translator.EmitScalarAlu(inst); break; - case Opcode::V_CMPX_NGE_F32: - translator.V_CMP_F32(ConditionOp::LT, true, inst); + case InstCategory::VectorALU: + translator.EmitVectorAlu(inst); break; - case Opcode::V_CMPX_NLG_F32: - translator.V_CMP_F32(ConditionOp::EQ, true, inst); - break; - case Opcode::V_CMPX_NGT_F32: - translator.V_CMP_F32(ConditionOp::LE, true, inst); - break; - case Opcode::V_CMPX_NLE_F32: - translator.V_CMP_F32(ConditionOp::GT, true, inst); - break; - case Opcode::V_CMPX_NEQ_F32: - translator.V_CMP_F32(ConditionOp::LG, true, inst); - break; - case Opcode::V_CMPX_NLT_F32: - translator.V_CMP_F32(ConditionOp::GE, true, inst); - break; - case Opcode::V_CMPX_TRU_F32: - translator.V_CMP_F32(ConditionOp::TRU, true, inst); - break; - case Opcode::V_CMP_LE_U32: - translator.V_CMP_U32(ConditionOp::LE, false, false, inst); - break; - case Opcode::V_CMP_GT_I32: - translator.V_CMP_U32(ConditionOp::GT, true, false, inst); - break; - case Opcode::V_CMP_LT_I32: - translator.V_CMP_U32(ConditionOp::LT, true, false, inst); - break; - case Opcode::V_CMPX_LT_I32: - translator.V_CMP_U32(ConditionOp::LT, true, true, inst); - break; - case Opcode::V_CMPX_F_U32: - translator.V_CMP_U32(ConditionOp::F, false, true, inst); - break; - case Opcode::V_CMPX_LT_U32: - translator.V_CMP_U32(ConditionOp::LT, false, true, inst); - break; - case Opcode::V_CMPX_EQ_U32: - translator.V_CMP_U32(ConditionOp::EQ, false, true, inst); - break; - case Opcode::V_CMPX_LE_U32: - translator.V_CMP_U32(ConditionOp::LE, false, true, inst); - break; - case Opcode::V_CMPX_GT_U32: - translator.V_CMP_U32(ConditionOp::GT, false, true, inst); - break; - case Opcode::V_CMPX_NE_U32: - translator.V_CMP_U32(ConditionOp::LG, false, true, inst); - break; - case Opcode::V_CMPX_GE_U32: - translator.V_CMP_U32(ConditionOp::GE, false, true, inst); - break; - case Opcode::V_CMPX_TRU_U32: - translator.V_CMP_U32(ConditionOp::TRU, false, true, inst); - break; - case Opcode::S_OR_B64: - translator.S_OR_B64(NegateMode::None, false, inst); - break; - case Opcode::S_NOR_B64: - translator.S_OR_B64(NegateMode::Result, false, inst); - break; - case Opcode::S_XOR_B64: - translator.S_OR_B64(NegateMode::None, true, inst); - break; - case Opcode::S_AND_B64: - translator.S_AND_B64(NegateMode::None, inst); - break; - case Opcode::S_NOT_B64: - translator.S_NOT_B64(inst); - break; - case Opcode::S_NAND_B64: - translator.S_AND_B64(NegateMode::Result, inst); - break; - case Opcode::V_LSHRREV_B32: - translator.V_LSHRREV_B32(inst); - break; - case Opcode::S_ADD_I32: - translator.S_ADD_I32(inst); - break; - case Opcode::V_MUL_HI_U32: - translator.V_MUL_HI_U32(false, inst); - break; - case Opcode::V_MUL_LO_I32: - translator.V_MUL_LO_U32(inst); - break; - case Opcode::V_SAD_U32: - translator.V_SAD_U32(inst); - break; - case Opcode::V_BFE_U32: - translator.V_BFE_U32(false, inst); - break; - case Opcode::V_BFE_I32: - translator.V_BFE_U32(true, inst); - break; - case Opcode::V_MAD_I32_I24: - translator.V_MAD_I32_I24(inst); - break; - case Opcode::V_MUL_I32_I24: - case Opcode::V_MUL_U32_U24: - translator.V_MUL_I32_I24(inst); - break; - case Opcode::V_SUB_I32: - translator.V_SUB_I32(inst); - break; - case Opcode::V_LSHR_B32: - translator.V_LSHR_B32(inst); - break; - case Opcode::V_ASHRREV_I32: - translator.V_ASHRREV_I32(inst); - break; - case Opcode::V_MAD_U32_U24: - translator.V_MAD_U32_U24(inst); - break; - case Opcode::S_AND_B32: - translator.S_AND_B32(inst); - break; - case Opcode::S_ASHR_I32: - translator.S_ASHR_I32(inst); - break; - case Opcode::S_OR_B32: - translator.S_OR_B32(inst); - break; - case Opcode::S_LSHR_B32: - translator.S_LSHR_B32(inst); - break; - case Opcode::S_CSELECT_B32: - translator.S_CSELECT_B32(inst); - break; - case Opcode::S_CSELECT_B64: - translator.S_CSELECT_B64(inst); - break; - case Opcode::S_BFE_U32: - translator.S_BFE_U32(inst); - break; - case Opcode::V_RNDNE_F32: - translator.V_RNDNE_F32(inst); - break; - case Opcode::V_BCNT_U32_B32: - translator.V_BCNT_U32_B32(inst); - break; - case Opcode::V_MAX3_F32: - translator.V_MAX3_F32(inst); - break; - case Opcode::DS_SWIZZLE_B32: - translator.DS_SWIZZLE_B32(inst); - break; - case Opcode::V_MUL_LO_U32: - translator.V_MUL_LO_U32(inst); - break; - case Opcode::S_BFM_B32: - translator.S_BFM_B32(inst); - break; - case Opcode::V_MIN_U32: - translator.V_MIN_U32(inst); - break; - case Opcode::V_CMP_NE_U64: - translator.V_CMP_NE_U64(inst); - break; - case Opcode::V_CMP_CLASS_F32: - translator.V_CMP_CLASS_F32(inst); - break; - case Opcode::V_TRUNC_F32: - translator.V_TRUNC_F32(inst); - break; - case Opcode::V_CEIL_F32: - translator.V_CEIL_F32(inst); - break; - case Opcode::V_BFI_B32: - translator.V_BFI_B32(inst); - break; - case Opcode::S_BREV_B32: - translator.S_BREV_B32(inst); - break; - case Opcode::S_ADD_U32: - translator.S_ADD_U32(inst); - break; - case Opcode::S_ADDC_U32: - translator.S_ADDC_U32(inst); - break; - case Opcode::S_SUB_U32: - case Opcode::S_SUB_I32: - translator.S_SUB_U32(inst); - break; - // TODO: Separate implementation for legacy variants. - case Opcode::V_MUL_LEGACY_F32: - translator.V_MUL_F32(inst); - break; - case Opcode::V_MAC_LEGACY_F32: - translator.V_MAC_F32(inst); - break; - case Opcode::V_MAD_LEGACY_F32: - translator.V_MAD_F32(inst); - break; - case Opcode::V_MAX_LEGACY_F32: - translator.V_MAX_F32(inst, true); - break; - case Opcode::V_RSQ_LEGACY_F32: - case Opcode::V_RSQ_CLAMP_F32: - translator.V_RSQ_F32(inst); - break; - case Opcode::V_RCP_IFLAG_F32: - translator.V_RCP_F32(inst); - break; - case Opcode::IMAGE_GET_RESINFO: - translator.IMAGE_GET_RESINFO(inst); - break; - case Opcode::S_BARRIER: - translator.S_BARRIER(); - break; - case Opcode::S_TTRACEDATA: - LOG_WARNING(Render_Vulkan, "S_TTRACEDATA instruction!"); - break; - case Opcode::DS_READ_B32: - translator.DS_READ(32, false, false, inst); - break; - case Opcode::DS_READ2_B32: - translator.DS_READ(32, false, true, inst); - break; - case Opcode::DS_WRITE_B32: - translator.DS_WRITE(32, false, false, inst); - break; - case Opcode::DS_WRITE2_B32: - translator.DS_WRITE(32, false, true, inst); - break; - case Opcode::V_READFIRSTLANE_B32: - translator.V_READFIRSTLANE_B32(inst); - break; - case Opcode::S_GETPC_B64: - translator.S_GETPC_B64(block_base, inst); - break; - case Opcode::S_NOP: - case Opcode::S_CBRANCH_EXECZ: - case Opcode::S_CBRANCH_SCC0: - case Opcode::S_CBRANCH_SCC1: - case Opcode::S_CBRANCH_VCCNZ: - case Opcode::S_CBRANCH_VCCZ: - case Opcode::S_BRANCH: - case Opcode::S_WQM_B64: - case Opcode::V_INTERP_P1_F32: - case Opcode::S_ENDPGM: + case InstCategory::DebugProfile: break; default: - const u32 opcode = u32(inst.opcode); - LOG_ERROR(Render_Recompiler, "Unknown opcode {} ({})", - magic_enum::enum_name(inst.opcode), opcode); - info.translation_failed = true; + UNREACHABLE(); } } } diff --git a/src/shader_recompiler/frontend/translate/translate.h b/src/shader_recompiler/frontend/translate/translate.h index 3203ad73..8d1b7683 100644 --- a/src/shader_recompiler/frontend/translate/translate.h +++ b/src/shader_recompiler/frontend/translate/translate.h @@ -11,7 +11,8 @@ namespace Shader { struct Info; -} +struct Profile; +} // namespace Shader namespace Shader::Gcn { @@ -24,6 +25,7 @@ enum class ConditionOp : u32 { LT, LE, TRU, + U, }; enum class AtomicOp : u32 { @@ -53,10 +55,19 @@ enum class NegateMode : u32 { class Translator { public: - explicit Translator(IR::Block* block_, Info& info); + explicit Translator(IR::Block* block_, Info& info, const Profile& profile); + // Instruction categories void EmitPrologue(); void EmitFetch(const GcnInst& inst); + void EmitDataShare(const GcnInst& inst); + void EmitVectorInterpolation(const GcnInst& inst); + void EmitScalarMemory(const GcnInst& inst); + void EmitVectorMemory(const GcnInst& inst); + void EmitExport(const GcnInst& inst); + void EmitFlowControl(u32 pc, const GcnInst& inst); + void EmitScalarAlu(const GcnInst& inst); + void EmitVectorAlu(const GcnInst& inst); // Scalar ALU void S_MOVK(const GcnInst& inst); @@ -83,6 +94,10 @@ public: void S_SUB_U32(const GcnInst& inst); void S_GETPC_B64(u32 pc, const GcnInst& inst); void S_ADDC_U32(const GcnInst& inst); + void S_MULK_I32(const GcnInst& inst); + void S_ADDK_I32(const GcnInst& inst); + void S_MAX_U32(const GcnInst& inst); + void S_MIN_U32(const GcnInst& inst); // Scalar Memory void S_LOAD_DWORD(int num_dwords, const GcnInst& inst); @@ -94,11 +109,13 @@ public: void V_MAC_F32(const GcnInst& inst); void V_CVT_PKRTZ_F16_F32(const GcnInst& inst); void V_CVT_F32_F16(const GcnInst& inst); + void V_CVT_F16_F32(const GcnInst& inst); void V_MUL_F32(const GcnInst& inst); void V_CNDMASK_B32(const GcnInst& inst); void V_OR_B32(bool is_xor, const GcnInst& inst); void V_AND_B32(const GcnInst& inst); void V_LSHLREV_B32(const GcnInst& inst); + void V_LSHL_B32(const GcnInst& inst); void V_ADD_I32(const GcnInst& inst); void V_ADDC_U32(const GcnInst& inst); void V_CVT_F32_I32(const GcnInst& inst); @@ -122,6 +139,7 @@ public: void V_SQRT_F32(const GcnInst& inst); void V_MIN_F32(const GcnInst& inst, bool is_legacy = false); void V_MIN3_F32(const GcnInst& inst); + void V_MIN3_I32(const GcnInst& inst); void V_MADMK_F32(const GcnInst& inst); void V_CUBEMA_F32(const GcnInst& inst); void V_CUBESC_F32(const GcnInst& inst); @@ -146,6 +164,7 @@ public: void V_BCNT_U32_B32(const GcnInst& inst); void V_COS_F32(const GcnInst& inst); void V_MAX3_F32(const GcnInst& inst); + void V_MAX3_U32(const GcnInst& inst); void V_CVT_I32_F32(const GcnInst& inst); void V_MIN_I32(const GcnInst& inst); void V_MUL_LO_U32(const GcnInst& inst); @@ -160,6 +179,8 @@ public: void V_LDEXP_F32(const GcnInst& inst); void V_CVT_FLR_I32_F32(const GcnInst& inst); void V_CMP_CLASS_F32(const GcnInst& inst); + void V_FFBL_B32(const GcnInst& inst); + void V_MBCNT_U32_B32(bool is_low, const GcnInst& inst); // Vector Memory void BUFFER_LOAD_FORMAT(u32 num_dwords, bool is_typed, bool is_format, const GcnInst& inst); @@ -167,12 +188,15 @@ public: // Vector interpolation void V_INTERP_P2_F32(const GcnInst& inst); + void V_INTERP_MOV_F32(const GcnInst& inst); // Data share void DS_SWIZZLE_B32(const GcnInst& inst); void DS_READ(int bit_size, bool is_signed, bool is_pair, const GcnInst& inst); void DS_WRITE(int bit_size, bool is_signed, bool is_pair, const GcnInst& inst); void V_READFIRSTLANE_B32(const GcnInst& inst); + void V_READLANE_B32(const GcnInst& inst); + void V_WRITELANE_B32(const GcnInst& inst); void S_BARRIER(); // MIMG @@ -184,9 +208,6 @@ public: void IMAGE_GET_LOD(const GcnInst& inst); void IMAGE_ATOMIC(AtomicOp op, const GcnInst& inst); - // Export - void EXP(const GcnInst& inst); - private: template [[nodiscard]] T GetSrc(const InstOperand& operand, bool flt_zero = false); @@ -195,12 +216,17 @@ private: void SetDst(const InstOperand& operand, const IR::U32F32& value); void SetDst64(const InstOperand& operand, const IR::U64F64& value_raw); + void LogMissingOpcode(const GcnInst& inst); + private: IR::IREmitter ir; Info& info; - static std::array exec_contexts; + const Profile& profile; + IR::U32 m0_value; + bool opcode_missing = false; }; -void Translate(IR::Block* block, u32 block_base, std::span inst_list, Info& info); +void Translate(IR::Block* block, u32 block_base, std::span inst_list, Info& info, + const Profile& profile); } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/vector_alu.cpp b/src/shader_recompiler/frontend/translate/vector_alu.cpp index 1b2024f8..669ef7ca 100644 --- a/src/shader_recompiler/frontend/translate/vector_alu.cpp +++ b/src/shader_recompiler/frontend/translate/vector_alu.cpp @@ -2,9 +2,311 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "shader_recompiler/frontend/translate/translate.h" +#include "shader_recompiler/profile.h" namespace Shader::Gcn { +void Translator::EmitVectorAlu(const GcnInst& inst) { + switch (inst.opcode) { + case Opcode::V_LSHLREV_B32: + return V_LSHLREV_B32(inst); + case Opcode::V_LSHL_B32: + return V_LSHL_B32(inst); + case Opcode::V_BFREV_B32: + return V_BFREV_B32(inst); + case Opcode::V_BFE_U32: + return V_BFE_U32(false, inst); + case Opcode::V_BFE_I32: + return V_BFE_U32(true, inst); + case Opcode::V_BFI_B32: + return V_BFI_B32(inst); + case Opcode::V_LSHR_B32: + return V_LSHR_B32(inst); + case Opcode::V_ASHRREV_I32: + return V_ASHRREV_I32(inst); + case Opcode::V_LSHRREV_B32: + return V_LSHRREV_B32(inst); + case Opcode::V_NOT_B32: + return V_NOT_B32(inst); + case Opcode::V_AND_B32: + return V_AND_B32(inst); + case Opcode::V_OR_B32: + return V_OR_B32(false, inst); + case Opcode::V_XOR_B32: + return V_OR_B32(true, inst); + case Opcode::V_FFBL_B32: + return V_FFBL_B32(inst); + + case Opcode::V_MOV_B32: + return V_MOV(inst); + case Opcode::V_ADD_I32: + return V_ADD_I32(inst); + case Opcode::V_ADDC_U32: + return V_ADDC_U32(inst); + case Opcode::V_CVT_F32_I32: + return V_CVT_F32_I32(inst); + case Opcode::V_CVT_F32_U32: + return V_CVT_F32_U32(inst); + case Opcode::V_CVT_PKRTZ_F16_F32: + return V_CVT_PKRTZ_F16_F32(inst); + case Opcode::V_CVT_F32_F16: + return V_CVT_F32_F16(inst); + case Opcode::V_CVT_F16_F32: + return V_CVT_F16_F32(inst); + case Opcode::V_CVT_F32_UBYTE0: + return V_CVT_F32_UBYTE(0, inst); + case Opcode::V_CVT_F32_UBYTE1: + return V_CVT_F32_UBYTE(1, inst); + case Opcode::V_CVT_F32_UBYTE2: + return V_CVT_F32_UBYTE(2, inst); + case Opcode::V_CVT_F32_UBYTE3: + return V_CVT_F32_UBYTE(3, inst); + case Opcode::V_CVT_OFF_F32_I4: + return V_CVT_OFF_F32_I4(inst); + case Opcode::V_MAD_U64_U32: + return V_MAD_U64_U32(inst); + case Opcode::V_CMP_GE_I32: + return V_CMP_U32(ConditionOp::GE, true, false, inst); + case Opcode::V_CMP_EQ_I32: + return V_CMP_U32(ConditionOp::EQ, true, false, inst); + case Opcode::V_CMP_LE_I32: + return V_CMP_U32(ConditionOp::LE, true, false, inst); + case Opcode::V_CMP_NE_I32: + return V_CMP_U32(ConditionOp::LG, true, false, inst); + case Opcode::V_CMP_NE_U32: + return V_CMP_U32(ConditionOp::LG, false, false, inst); + case Opcode::V_CMP_EQ_U32: + return V_CMP_U32(ConditionOp::EQ, false, false, inst); + case Opcode::V_CMP_F_U32: + return V_CMP_U32(ConditionOp::F, false, false, inst); + case Opcode::V_CMP_LT_U32: + return V_CMP_U32(ConditionOp::LT, false, false, inst); + case Opcode::V_CMP_GT_U32: + return V_CMP_U32(ConditionOp::GT, false, false, inst); + case Opcode::V_CMP_GE_U32: + return V_CMP_U32(ConditionOp::GE, false, false, inst); + case Opcode::V_CMP_TRU_U32: + return V_CMP_U32(ConditionOp::TRU, false, false, inst); + case Opcode::V_CMP_NEQ_F32: + return V_CMP_F32(ConditionOp::LG, false, inst); + case Opcode::V_CMP_F_F32: + return V_CMP_F32(ConditionOp::F, false, inst); + case Opcode::V_CMP_LT_F32: + return V_CMP_F32(ConditionOp::LT, false, inst); + case Opcode::V_CMP_EQ_F32: + return V_CMP_F32(ConditionOp::EQ, false, inst); + case Opcode::V_CMP_LE_F32: + return V_CMP_F32(ConditionOp::LE, false, inst); + case Opcode::V_CMP_GT_F32: + return V_CMP_F32(ConditionOp::GT, false, inst); + case Opcode::V_CMP_LG_F32: + return V_CMP_F32(ConditionOp::LG, false, inst); + case Opcode::V_CMP_GE_F32: + return V_CMP_F32(ConditionOp::GE, false, inst); + case Opcode::V_CMP_NLE_F32: + return V_CMP_F32(ConditionOp::GT, false, inst); + case Opcode::V_CMP_NLT_F32: + return V_CMP_F32(ConditionOp::GE, false, inst); + case Opcode::V_CMP_NGT_F32: + return V_CMP_F32(ConditionOp::LE, false, inst); + case Opcode::V_CMP_NGE_F32: + return V_CMP_F32(ConditionOp::LT, false, inst); + case Opcode::V_CMP_U_F32: + return V_CMP_F32(ConditionOp::U, false, inst); + case Opcode::V_CNDMASK_B32: + return V_CNDMASK_B32(inst); + case Opcode::V_MAX_I32: + return V_MAX_U32(true, inst); + case Opcode::V_MAX_U32: + return V_MAX_U32(false, inst); + case Opcode::V_MIN_I32: + return V_MIN_I32(inst); + case Opcode::V_CUBEMA_F32: + return V_CUBEMA_F32(inst); + case Opcode::V_CUBESC_F32: + return V_CUBESC_F32(inst); + case Opcode::V_CUBETC_F32: + return V_CUBETC_F32(inst); + case Opcode::V_CUBEID_F32: + return V_CUBEID_F32(inst); + case Opcode::V_CVT_U32_F32: + return V_CVT_U32_F32(inst); + case Opcode::V_CVT_I32_F32: + return V_CVT_I32_F32(inst); + case Opcode::V_CVT_FLR_I32_F32: + return V_CVT_FLR_I32_F32(inst); + case Opcode::V_SUBREV_I32: + return V_SUBREV_I32(inst); + case Opcode::V_MUL_HI_U32: + return V_MUL_HI_U32(false, inst); + case Opcode::V_MUL_LO_I32: + return V_MUL_LO_U32(inst); + case Opcode::V_SAD_U32: + return V_SAD_U32(inst); + case Opcode::V_SUB_I32: + return V_SUB_I32(inst); + case Opcode::V_MAD_I32_I24: + return V_MAD_I32_I24(inst); + case Opcode::V_MUL_I32_I24: + case Opcode::V_MUL_U32_U24: + return V_MUL_I32_I24(inst); + case Opcode::V_MAD_U32_U24: + return V_MAD_U32_U24(inst); + case Opcode::V_BCNT_U32_B32: + return V_BCNT_U32_B32(inst); + case Opcode::V_MUL_LO_U32: + return V_MUL_LO_U32(inst); + case Opcode::V_MIN_U32: + return V_MIN_U32(inst); + case Opcode::V_CMP_NE_U64: + return V_CMP_NE_U64(inst); + case Opcode::V_READFIRSTLANE_B32: + return V_READFIRSTLANE_B32(inst); + case Opcode::V_READLANE_B32: + return V_READLANE_B32(inst); + case Opcode::V_WRITELANE_B32: + return V_WRITELANE_B32(inst); + + case Opcode::V_MAD_F32: + return V_MAD_F32(inst); + case Opcode::V_MAC_F32: + return V_MAC_F32(inst); + case Opcode::V_MUL_F32: + return V_MUL_F32(inst); + case Opcode::V_RCP_F32: + return V_RCP_F32(inst); + case Opcode::V_LDEXP_F32: + return V_LDEXP_F32(inst); + case Opcode::V_FRACT_F32: + return V_FRACT_F32(inst); + case Opcode::V_ADD_F32: + return V_ADD_F32(inst); + case Opcode::V_MED3_F32: + return V_MED3_F32(inst); + case Opcode::V_FLOOR_F32: + return V_FLOOR_F32(inst); + case Opcode::V_SUB_F32: + return V_SUB_F32(inst); + case Opcode::V_FMA_F32: + case Opcode::V_MADAK_F32: + return V_FMA_F32(inst); + case Opcode::V_MAX_F32: + return V_MAX_F32(inst); + case Opcode::V_RSQ_F32: + return V_RSQ_F32(inst); + case Opcode::V_SIN_F32: + return V_SIN_F32(inst); + case Opcode::V_COS_F32: + return V_COS_F32(inst); + case Opcode::V_LOG_F32: + return V_LOG_F32(inst); + case Opcode::V_EXP_F32: + return V_EXP_F32(inst); + case Opcode::V_SQRT_F32: + return V_SQRT_F32(inst); + case Opcode::V_MIN_F32: + return V_MIN_F32(inst, false); + case Opcode::V_MIN3_F32: + return V_MIN3_F32(inst); + case Opcode::V_MIN3_I32: + return V_MIN3_I32(inst); + case Opcode::V_MIN_LEGACY_F32: + return V_MIN_F32(inst, true); + case Opcode::V_MADMK_F32: + return V_MADMK_F32(inst); + case Opcode::V_SUBREV_F32: + return V_SUBREV_F32(inst); + case Opcode::V_RNDNE_F32: + return V_RNDNE_F32(inst); + case Opcode::V_MAX3_F32: + return V_MAX3_F32(inst); + case Opcode::V_MAX3_U32: + return V_MAX3_U32(inst); + case Opcode::V_TRUNC_F32: + return V_TRUNC_F32(inst); + case Opcode::V_CEIL_F32: + return V_CEIL_F32(inst); + case Opcode::V_MUL_LEGACY_F32: + return V_MUL_F32(inst); + case Opcode::V_MAC_LEGACY_F32: + return V_MAC_F32(inst); + case Opcode::V_MAD_LEGACY_F32: + return V_MAD_F32(inst); + case Opcode::V_MAX_LEGACY_F32: + return V_MAX_F32(inst, true); + case Opcode::V_RSQ_LEGACY_F32: + case Opcode::V_RSQ_CLAMP_F32: + return V_RSQ_F32(inst); + case Opcode::V_RCP_IFLAG_F32: + return V_RCP_F32(inst); + + case Opcode::V_CMPX_F_F32: + return V_CMP_F32(ConditionOp::F, true, inst); + case Opcode::V_CMPX_LT_F32: + return V_CMP_F32(ConditionOp::LT, true, inst); + case Opcode::V_CMPX_EQ_F32: + return V_CMP_F32(ConditionOp::EQ, true, inst); + case Opcode::V_CMPX_LE_F32: + return V_CMP_F32(ConditionOp::LE, true, inst); + case Opcode::V_CMPX_GT_F32: + return V_CMP_F32(ConditionOp::GT, true, inst); + case Opcode::V_CMPX_LG_F32: + return V_CMP_F32(ConditionOp::LG, true, inst); + case Opcode::V_CMPX_GE_F32: + return V_CMP_F32(ConditionOp::GE, true, inst); + case Opcode::V_CMPX_NGE_F32: + return V_CMP_F32(ConditionOp::LT, true, inst); + case Opcode::V_CMPX_NLG_F32: + return V_CMP_F32(ConditionOp::EQ, true, inst); + case Opcode::V_CMPX_NGT_F32: + return V_CMP_F32(ConditionOp::LE, true, inst); + case Opcode::V_CMPX_NLE_F32: + return V_CMP_F32(ConditionOp::GT, true, inst); + case Opcode::V_CMPX_NEQ_F32: + return V_CMP_F32(ConditionOp::LG, true, inst); + case Opcode::V_CMPX_NLT_F32: + return V_CMP_F32(ConditionOp::GE, true, inst); + case Opcode::V_CMPX_TRU_F32: + return V_CMP_F32(ConditionOp::TRU, true, inst); + case Opcode::V_CMP_CLASS_F32: + return V_CMP_CLASS_F32(inst); + + case Opcode::V_CMP_LE_U32: + return V_CMP_U32(ConditionOp::LE, false, false, inst); + case Opcode::V_CMP_GT_I32: + return V_CMP_U32(ConditionOp::GT, true, false, inst); + case Opcode::V_CMP_LT_I32: + return V_CMP_U32(ConditionOp::LT, true, false, inst); + case Opcode::V_CMPX_LT_I32: + return V_CMP_U32(ConditionOp::LT, true, true, inst); + case Opcode::V_CMPX_F_U32: + return V_CMP_U32(ConditionOp::F, false, true, inst); + case Opcode::V_CMPX_LT_U32: + return V_CMP_U32(ConditionOp::LT, false, true, inst); + case Opcode::V_CMPX_EQ_U32: + return V_CMP_U32(ConditionOp::EQ, false, true, inst); + case Opcode::V_CMPX_LE_U32: + return V_CMP_U32(ConditionOp::LE, false, true, inst); + case Opcode::V_CMPX_GT_U32: + return V_CMP_U32(ConditionOp::GT, false, true, inst); + case Opcode::V_CMPX_NE_U32: + return V_CMP_U32(ConditionOp::LG, false, true, inst); + case Opcode::V_CMPX_GE_U32: + return V_CMP_U32(ConditionOp::GE, false, true, inst); + case Opcode::V_CMPX_TRU_U32: + return V_CMP_U32(ConditionOp::TRU, false, true, inst); + case Opcode::V_CMPX_LG_I32: + return V_CMP_U32(ConditionOp::LG, true, true, inst); + + case Opcode::V_MBCNT_LO_U32_B32: + return V_MBCNT_U32_B32(true, inst); + case Opcode::V_MBCNT_HI_U32_B32: + return V_MBCNT_U32_B32(false, inst); + default: + LogMissingOpcode(inst); + } +} + void Translator::V_MOV(const GcnInst& inst) { SetDst(inst.dst[0], GetSrc(inst.src[0])); } @@ -32,6 +334,12 @@ void Translator::V_CVT_F32_F16(const GcnInst& inst) { SetDst(inst.dst[0], ir.FPConvert(32, ir.BitCast(src0l))); } +void Translator::V_CVT_F16_F32(const GcnInst& inst) { + const IR::F32 src0 = GetSrc(inst.src[0], true); + const IR::F16 src0fp16 = ir.FPConvert(16, src0); + SetDst(inst.dst[0], ir.UConvert(32, ir.BitCast(src0fp16))); +} + void Translator::V_MUL_F32(const GcnInst& inst) { SetDst(inst.dst[0], ir.FPMul(GetSrc(inst.src[0], true), GetSrc(inst.src[1], true))); } @@ -85,6 +393,12 @@ void Translator::V_LSHLREV_B32(const GcnInst& inst) { ir.SetVectorReg(dst_reg, ir.ShiftLeftLogical(src1, ir.BitwiseAnd(src0, ir.Imm32(0x1F)))); } +void Translator::V_LSHL_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + SetDst(inst.dst[0], ir.ShiftLeftLogical(src0, ir.BitwiseAnd(src1, ir.Imm32(0x1F)))); +} + void Translator::V_ADD_I32(const GcnInst& inst) { const IR::U32 src0{GetSrc(inst.src[0])}; const IR::U32 src1{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; @@ -208,6 +522,8 @@ void Translator::V_CMP_F32(ConditionOp op, bool set_exec, const GcnInst& inst) { return ir.FPLessThanEqual(src0, src1); case ConditionOp::GE: return ir.FPGreaterThanEqual(src0, src1); + case ConditionOp::U: + return ir.LogicalNot(ir.LogicalAnd(ir.FPIsNan(src0), ir.FPIsNan(src1))); default: UNREACHABLE(); } @@ -278,6 +594,13 @@ void Translator::V_MIN3_F32(const GcnInst& inst) { SetDst(inst.dst[0], ir.FPMin(src0, ir.FPMin(src1, src2))); } +void Translator::V_MIN3_I32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 src2{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], ir.SMin(src0, ir.SMin(src1, src2))); +} + void Translator::V_MADMK_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0], true)}; const IR::F32 src1{GetSrc(inst.src[1], true)}; @@ -320,12 +643,13 @@ void Translator::V_SUBREV_I32(const GcnInst& inst) { } void Translator::V_MAD_U64_U32(const GcnInst& inst) { - const auto src0 = GetSrc(inst.src[0]); const auto src1 = GetSrc(inst.src[1]); const auto src2 = GetSrc64(inst.src[2]); - const IR::U64 mul_result = ir.UConvert(64, ir.IMul(src0, src1)); + // const IR::U64 mul_result = ir.UConvert(64, ir.IMul(src0, src1)); + const IR::U64 mul_result = + ir.PackUint2x32(ir.CompositeConstruct(ir.IMul(src0, src1), ir.Imm32(0U))); const IR::U64 sum_result = ir.IAdd(mul_result, src2); SetDst64(inst.dst[0], sum_result); @@ -463,6 +787,13 @@ void Translator::V_MAX3_F32(const GcnInst& inst) { SetDst(inst.dst[0], ir.FPMax(src0, ir.FPMax(src1, src2))); } +void Translator::V_MAX3_U32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 src2{GetSrc(inst.src[2])}; + SetDst(inst.dst[0], ir.UMax(src0, ir.UMax(src1, src2))); +} + void Translator::V_CVT_I32_F32(const GcnInst& inst) { const IR::F32 src0{GetSrc(inst.src[0], true)}; SetDst(inst.dst[0], ir.ConvertFToS(32, src0)); @@ -561,38 +892,58 @@ void Translator::V_CVT_FLR_I32_F32(const GcnInst& inst) { } void Translator::V_CMP_CLASS_F32(const GcnInst& inst) { - constexpr u32 SIGNALING_NAN = 1 << 0; - constexpr u32 QUIET_NAN = 1 << 1; - constexpr u32 NEGATIVE_INFINITY = 1 << 2; - constexpr u32 NEGATIVE_NORMAL = 1 << 3; - constexpr u32 NEGATIVE_DENORM = 1 << 4; - constexpr u32 NEGATIVE_ZERO = 1 << 5; - constexpr u32 POSITIVE_ZERO = 1 << 6; - constexpr u32 POSITIVE_DENORM = 1 << 7; - constexpr u32 POSITIVE_NORMAL = 1 << 8; - constexpr u32 POSITIVE_INFINITY = 1 << 9; - const IR::F32F64 src0{GetSrc(inst.src[0])}; const IR::U32 src1{GetSrc(inst.src[1])}; + IR::U1 value; if (src1.IsImmediate()) { - const u32 class_mask = src1.U32(); - IR::U1 value; - if ((class_mask & (SIGNALING_NAN | QUIET_NAN)) == (SIGNALING_NAN | QUIET_NAN)) { + const auto class_mask = static_cast(src1.U32()); + if ((class_mask & IR::FloatClassFunc::NaN) == IR::FloatClassFunc::NaN) { value = ir.FPIsNan(src0); - } else if ((class_mask & (POSITIVE_INFINITY | NEGATIVE_INFINITY)) == - (POSITIVE_INFINITY | NEGATIVE_INFINITY)) { + } else if ((class_mask & IR::FloatClassFunc::Infinity) == IR::FloatClassFunc::Infinity) { value = ir.FPIsInf(src0); } else { UNREACHABLE(); } - if (inst.dst[1].field == OperandField::VccLo) { - return ir.SetVcc(value); - } else { - UNREACHABLE(); - } } else { + // We don't know the type yet, delay its resolution. + value = ir.FPCmpClass32(src0, src1); + } + + switch (inst.dst[1].field) { + case OperandField::VccLo: + return ir.SetVcc(value); + default: UNREACHABLE(); } } +void Translator::V_FFBL_B32(const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + SetDst(inst.dst[0], ir.FindILsb(src0)); +} + +void Translator::V_MBCNT_U32_B32(bool is_low, const GcnInst& inst) { + const IR::U32 src0{GetSrc(inst.src[0])}; + const IR::U32 src1{GetSrc(inst.src[1])}; + const IR::U32 lane_id = ir.LaneId(); + + const auto [warp_half, mask_shift] = [&]() -> std::pair { + if (profile.subgroup_size == 32) { + const IR::U32 warp_half = ir.BitwiseAnd(ir.WarpId(), ir.Imm32(1)); + return std::make_pair(warp_half, lane_id); + } + const IR::U32 warp_half = ir.ShiftRightLogical(lane_id, ir.Imm32(5)); + const IR::U32 mask_shift = ir.BitwiseAnd(lane_id, ir.Imm32(0x1F)); + return std::make_pair(warp_half, mask_shift); + }(); + + const IR::U32 thread_mask = ir.ISub(ir.ShiftLeftLogical(ir.Imm32(1), mask_shift), ir.Imm32(1)); + const IR::U1 is_odd_warp = ir.INotEqual(warp_half, ir.Imm32(0)); + const IR::U32 mask = IR::U32{ir.Select(is_odd_warp, is_low ? ir.Imm32(~0U) : thread_mask, + is_low ? thread_mask : ir.Imm32(0))}; + const IR::U32 masked_value = ir.BitwiseAnd(src0, mask); + const IR::U32 result = ir.IAdd(src1, ir.BitCount(masked_value)); + SetDst(inst.dst[0], result); +} + } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/vector_interpolation.cpp b/src/shader_recompiler/frontend/translate/vector_interpolation.cpp index 55a2d624..4ff846cf 100644 --- a/src/shader_recompiler/frontend/translate/vector_interpolation.cpp +++ b/src/shader_recompiler/frontend/translate/vector_interpolation.cpp @@ -12,4 +12,24 @@ void Translator::V_INTERP_P2_F32(const GcnInst& inst) { ir.SetVectorReg(dst_reg, ir.GetAttribute(attrib, inst.control.vintrp.chan)); } +void Translator::V_INTERP_MOV_F32(const GcnInst& inst) { + const IR::VectorReg dst_reg{inst.dst[0].code}; + auto& attr = info.ps_inputs.at(inst.control.vintrp.attr); + const IR::Attribute attrib{IR::Attribute::Param0 + attr.param_index}; + ir.SetVectorReg(dst_reg, ir.GetAttribute(attrib, inst.control.vintrp.chan)); +} + +void Translator::EmitVectorInterpolation(const GcnInst& inst) { + switch (inst.opcode) { + case Opcode::V_INTERP_P1_F32: + return; + case Opcode::V_INTERP_P2_F32: + return V_INTERP_P2_F32(inst); + case Opcode::V_INTERP_MOV_F32: + return V_INTERP_MOV_F32(inst); + default: + LogMissingOpcode(inst); + } +} + } // namespace Shader::Gcn diff --git a/src/shader_recompiler/frontend/translate/vector_memory.cpp b/src/shader_recompiler/frontend/translate/vector_memory.cpp index f4383c61..c667968a 100644 --- a/src/shader_recompiler/frontend/translate/vector_memory.cpp +++ b/src/shader_recompiler/frontend/translate/vector_memory.cpp @@ -5,9 +5,96 @@ namespace Shader::Gcn { +void Translator::EmitVectorMemory(const GcnInst& inst) { + switch (inst.opcode) { + case Opcode::IMAGE_SAMPLE_LZ_O: + case Opcode::IMAGE_SAMPLE_O: + case Opcode::IMAGE_SAMPLE_C: + case Opcode::IMAGE_SAMPLE_C_LZ: + case Opcode::IMAGE_SAMPLE_LZ: + case Opcode::IMAGE_SAMPLE: + case Opcode::IMAGE_SAMPLE_L: + case Opcode::IMAGE_SAMPLE_C_O: + case Opcode::IMAGE_SAMPLE_B: + case Opcode::IMAGE_SAMPLE_C_LZ_O: + return IMAGE_SAMPLE(inst); + case Opcode::IMAGE_GATHER4_C: + case Opcode::IMAGE_GATHER4_LZ: + case Opcode::IMAGE_GATHER4_LZ_O: + return IMAGE_GATHER(inst); + case Opcode::IMAGE_ATOMIC_ADD: + return IMAGE_ATOMIC(AtomicOp::Add, inst); + case Opcode::IMAGE_ATOMIC_AND: + return IMAGE_ATOMIC(AtomicOp::And, inst); + case Opcode::IMAGE_ATOMIC_OR: + return IMAGE_ATOMIC(AtomicOp::Or, inst); + case Opcode::IMAGE_ATOMIC_XOR: + return IMAGE_ATOMIC(AtomicOp::Xor, inst); + case Opcode::IMAGE_ATOMIC_UMAX: + return IMAGE_ATOMIC(AtomicOp::Umax, inst); + case Opcode::IMAGE_ATOMIC_SMAX: + return IMAGE_ATOMIC(AtomicOp::Smax, inst); + case Opcode::IMAGE_ATOMIC_UMIN: + return IMAGE_ATOMIC(AtomicOp::Umin, inst); + case Opcode::IMAGE_ATOMIC_SMIN: + return IMAGE_ATOMIC(AtomicOp::Smin, inst); + case Opcode::IMAGE_ATOMIC_INC: + return IMAGE_ATOMIC(AtomicOp::Inc, inst); + case Opcode::IMAGE_ATOMIC_DEC: + return IMAGE_ATOMIC(AtomicOp::Dec, inst); + case Opcode::IMAGE_GET_LOD: + return IMAGE_GET_LOD(inst); + case Opcode::IMAGE_STORE: + return IMAGE_STORE(inst); + case Opcode::IMAGE_LOAD_MIP: + return IMAGE_LOAD(true, inst); + case Opcode::IMAGE_LOAD: + return IMAGE_LOAD(false, inst); + case Opcode::IMAGE_GET_RESINFO: + return IMAGE_GET_RESINFO(inst); + + case Opcode::TBUFFER_LOAD_FORMAT_X: + return BUFFER_LOAD_FORMAT(1, true, true, inst); + case Opcode::TBUFFER_LOAD_FORMAT_XY: + return BUFFER_LOAD_FORMAT(2, true, true, inst); + case Opcode::TBUFFER_LOAD_FORMAT_XYZ: + return BUFFER_LOAD_FORMAT(3, true, true, inst); + case Opcode::TBUFFER_LOAD_FORMAT_XYZW: + return BUFFER_LOAD_FORMAT(4, true, true, inst); + case Opcode::BUFFER_LOAD_FORMAT_X: + return BUFFER_LOAD_FORMAT(1, false, true, inst); + case Opcode::BUFFER_LOAD_FORMAT_XY: + return BUFFER_LOAD_FORMAT(2, false, true, inst); + case Opcode::BUFFER_LOAD_FORMAT_XYZ: + return BUFFER_LOAD_FORMAT(3, false, true, inst); + case Opcode::BUFFER_LOAD_FORMAT_XYZW: + return BUFFER_LOAD_FORMAT(4, false, true, inst); + case Opcode::BUFFER_LOAD_DWORD: + return BUFFER_LOAD_FORMAT(1, false, false, inst); + case Opcode::BUFFER_LOAD_DWORDX2: + return BUFFER_LOAD_FORMAT(2, false, false, inst); + case Opcode::BUFFER_LOAD_DWORDX3: + return BUFFER_LOAD_FORMAT(3, false, false, inst); + case Opcode::BUFFER_LOAD_DWORDX4: + return BUFFER_LOAD_FORMAT(4, false, false, inst); + case Opcode::BUFFER_STORE_FORMAT_X: + case Opcode::BUFFER_STORE_DWORD: + return BUFFER_STORE_FORMAT(1, false, inst); + case Opcode::BUFFER_STORE_DWORDX2: + return BUFFER_STORE_FORMAT(2, false, inst); + case Opcode::BUFFER_STORE_DWORDX3: + return BUFFER_STORE_FORMAT(3, false, inst); + case Opcode::BUFFER_STORE_FORMAT_XYZW: + case Opcode::BUFFER_STORE_DWORDX4: + return BUFFER_STORE_FORMAT(4, false, inst); + default: + LogMissingOpcode(inst); + } +} + void Translator::IMAGE_GET_RESINFO(const GcnInst& inst) { IR::VectorReg dst_reg{inst.dst[0].code}; - const IR::ScalarReg tsharp_reg{inst.src[2].code}; + const IR::ScalarReg tsharp_reg{inst.src[2].code * 4}; const auto flags = ImageResFlags(inst.control.mimg.dmask); const bool has_mips = flags.test(ImageResComponent::MipCount); const IR::U32 lod = ir.GetVectorReg(IR::VectorReg(inst.src[0].code)); @@ -157,7 +244,7 @@ void Translator::IMAGE_GATHER(const GcnInst& inst) { info.has_bias.Assign(flags.test(MimgModifier::LodBias)); info.has_lod_clamp.Assign(flags.test(MimgModifier::LodClamp)); info.force_level0.Assign(flags.test(MimgModifier::Level0)); - info.explicit_lod.Assign(explicit_lod); + // info.explicit_lod.Assign(explicit_lod); info.gather_comp.Assign(std::bit_width(mimg.dmask) - 1); // Issue IR instruction, leaving unknown fields blank to patch later. diff --git a/src/shader_recompiler/ir/breadth_first_search.h b/src/shader_recompiler/ir/breadth_first_search.h index 21a34a90..0156303f 100644 --- a/src/shader_recompiler/ir/breadth_first_search.h +++ b/src/shader_recompiler/ir/breadth_first_search.h @@ -12,16 +12,16 @@ namespace Shader::IR { template -auto BreadthFirstSearch(const Value& value, Pred&& pred) - -> std::invoke_result_t { - if (value.IsImmediate()) { - // Nothing to do with immediates - return std::nullopt; +auto BreadthFirstSearch(const Inst* inst, Pred&& pred) -> std::invoke_result_t { + // Most often case the instruction is the desired already. + if (const std::optional result = pred(inst)) { + return result; } + // Breadth-first search visiting the right most arguments first boost::container::small_vector visited; std::queue queue; - queue.push(value.InstRecursive()); + queue.push(inst); while (!queue.empty()) { // Pop one instruction from the queue @@ -49,4 +49,14 @@ auto BreadthFirstSearch(const Value& value, Pred&& pred) return std::nullopt; } +template +auto BreadthFirstSearch(const Value& value, Pred&& pred) + -> std::invoke_result_t { + if (value.IsImmediate()) { + // Nothing to do with immediates + return std::nullopt; + } + return BreadthFirstSearch(value.InstRecursive(), pred); +} + } // namespace Shader::IR diff --git a/src/shader_recompiler/ir/ir_emitter.cpp b/src/shader_recompiler/ir/ir_emitter.cpp index 8b605df8..03404aca 100644 --- a/src/shader_recompiler/ir/ir_emitter.cpp +++ b/src/shader_recompiler/ir/ir_emitter.cpp @@ -278,7 +278,7 @@ Value IREmitter::LoadShared(int bit_size, bool is_signed, const U32& offset) { case 32: return Inst(Opcode::LoadSharedU32, offset); case 64: - return Inst(Opcode::LoadSharedU64, offset); + return Inst(Opcode::LoadSharedU64, offset); case 128: return Inst(Opcode::LoadSharedU128, offset); default: @@ -373,6 +373,10 @@ U32 IREmitter::LaneId() { return Inst(Opcode::LaneId); } +U32 IREmitter::WarpId() { + return Inst(Opcode::WarpId); +} + U32 IREmitter::QuadShuffle(const U32& value, const U32& index) { return Inst(Opcode::QuadShuffle, value, index); } @@ -876,6 +880,10 @@ U1 IREmitter::FPIsInf(const F32F64& value) { } } +U1 IREmitter::FPCmpClass32(const F32& value, const U32& op) { + return Inst(Opcode::FPCmpClass32, value, op); +} + U1 IREmitter::FPOrdered(const F32F64& lhs, const F32F64& rhs) { if (lhs.Type() != rhs.Type()) { UNREACHABLE_MSG("Mismatching types {} and {}", lhs.Type(), rhs.Type()); @@ -1088,6 +1096,10 @@ U32 IREmitter::FindUMsb(const U32& value) { return Inst(Opcode::FindUMsb32, value); } +U32 IREmitter::FindILsb(const U32& value) { + return Inst(Opcode::FindILsb32, value); +} + U32 IREmitter::SMin(const U32& a, const U32& b) { return Inst(Opcode::SMin32, a, b); } @@ -1274,6 +1286,11 @@ U16U32U64 IREmitter::UConvert(size_t result_bitsize, const U16U32U64& value) { default: break; } + case 32: + switch (value.Type()) { + case Type::U16: + return Inst(Opcode::ConvertU32U16, value); + } default: break; } diff --git a/src/shader_recompiler/ir/ir_emitter.h b/src/shader_recompiler/ir/ir_emitter.h index 7ee4e824..a65e4613 100644 --- a/src/shader_recompiler/ir/ir_emitter.h +++ b/src/shader_recompiler/ir/ir_emitter.h @@ -95,6 +95,7 @@ public: BufferInstInfo info); [[nodiscard]] U32 LaneId(); + [[nodiscard]] U32 WarpId(); [[nodiscard]] U32 QuadShuffle(const U32& value, const U32& index); [[nodiscard]] Value CompositeConstruct(const Value& e1, const Value& e2); @@ -150,6 +151,7 @@ public: [[nodiscard]] U1 FPGreaterThan(const F32F64& lhs, const F32F64& rhs, bool ordered = true); [[nodiscard]] U1 FPIsNan(const F32F64& value); [[nodiscard]] U1 FPIsInf(const F32F64& value); + [[nodiscard]] U1 FPCmpClass32(const F32& value, const U32& op); [[nodiscard]] U1 FPOrdered(const F32F64& lhs, const F32F64& rhs); [[nodiscard]] U1 FPUnordered(const F32F64& lhs, const F32F64& rhs); [[nodiscard]] F32F64 FPMax(const F32F64& lhs, const F32F64& rhs, bool is_legacy = false); @@ -179,6 +181,7 @@ public: [[nodiscard]] U32 FindSMsb(const U32& value); [[nodiscard]] U32 FindUMsb(const U32& value); + [[nodiscard]] U32 FindILsb(const U32& value); [[nodiscard]] U32 SMin(const U32& a, const U32& b); [[nodiscard]] U32 UMin(const U32& a, const U32& b); [[nodiscard]] U32 IMin(const U32& a, const U32& b, bool is_signed); diff --git a/src/shader_recompiler/ir/opcodes.inc b/src/shader_recompiler/ir/opcodes.inc index 628b8d4f..aa2fd3f8 100644 --- a/src/shader_recompiler/ir/opcodes.inc +++ b/src/shader_recompiler/ir/opcodes.inc @@ -219,6 +219,7 @@ OPCODE(FPIsNan32, U1, F32, OPCODE(FPIsNan64, U1, F64, ) OPCODE(FPIsInf32, U1, F32, ) OPCODE(FPIsInf64, U1, F64, ) +OPCODE(FPCmpClass32, U1, F32, U32 ) // Integer operations OPCODE(IAdd32, U32, U32, U32, ) @@ -254,6 +255,7 @@ OPCODE(BitwiseNot32, U32, U32, OPCODE(FindSMsb32, U32, U32, ) OPCODE(FindUMsb32, U32, U32, ) +OPCODE(FindILsb32, U32, U32, ) OPCODE(SMin32, U32, U32, U32, ) OPCODE(UMin32, U32, U32, U32, ) OPCODE(SMax32, U32, U32, U32, ) @@ -293,6 +295,7 @@ OPCODE(ConvertF64S32, F64, U32, OPCODE(ConvertF64U32, F64, U32, ) OPCODE(ConvertF32U16, F32, U16, ) OPCODE(ConvertU16U32, U16, U32, ) +OPCODE(ConvertU32U16, U32, U16, ) // Image operations OPCODE(ImageSampleImplicitLod, F32x4, Opaque, Opaque, Opaque, Opaque, ) @@ -323,4 +326,5 @@ OPCODE(ImageAtomicExchange32, U32, Opaq // Warp operations OPCODE(LaneId, U32, ) +OPCODE(WarpId, U32, ) OPCODE(QuadShuffle, U32, U32, U32 ) diff --git a/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp b/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp index 13c0246e..94218b32 100644 --- a/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp +++ b/src/shader_recompiler/ir/passes/constant_propogation_pass.cpp @@ -238,6 +238,18 @@ void FoldBooleanConvert(IR::Inst& inst) { } } +void FoldCmpClass(IR::Inst& inst) { + ASSERT_MSG(inst.Arg(1).IsImmediate(), "Unable to resolve compare operation"); + const auto class_mask = static_cast(inst.Arg(1).U32()); + if ((class_mask & IR::FloatClassFunc::NaN) == IR::FloatClassFunc::NaN) { + inst.ReplaceOpcode(IR::Opcode::FPIsNan32); + } else if ((class_mask & IR::FloatClassFunc::Infinity) == IR::FloatClassFunc::Infinity) { + inst.ReplaceOpcode(IR::Opcode::FPIsInf32); + } else { + UNREACHABLE(); + } +} + void ConstantPropagation(IR::Block& block, IR::Inst& inst) { switch (inst.GetOpcode()) { case IR::Opcode::IAdd32: @@ -251,6 +263,9 @@ void ConstantPropagation(IR::Block& block, IR::Inst& inst) { case IR::Opcode::IMul32: FoldWhenAllImmediates(inst, [](u32 a, u32 b) { return a * b; }); return; + case IR::Opcode::FPCmpClass32: + FoldCmpClass(inst); + return; case IR::Opcode::ShiftRightArithmetic32: FoldWhenAllImmediates(inst, [](s32 a, s32 b) { return static_cast(a >> b); }); return; diff --git a/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp b/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp index 6526ece6..eaca8ce8 100644 --- a/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp +++ b/src/shader_recompiler/ir/passes/resource_tracking_pass.cpp @@ -2,7 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include -#include #include #include "shader_recompiler/ir/basic_block.h" #include "shader_recompiler/ir/breadth_first_search.h" @@ -273,9 +272,18 @@ std::pair TryDisableAnisoLod0(const IR::Inst* inst) { } SharpLocation TrackSharp(const IR::Inst* inst) { - while (inst->GetOpcode() == IR::Opcode::Phi) { - inst = inst->Arg(0).InstRecursive(); - } + // Search until we find a potential sharp source. + const auto pred0 = [](const IR::Inst* inst) -> std::optional { + if (inst->GetOpcode() == IR::Opcode::GetUserData || + inst->GetOpcode() == IR::Opcode::ReadConst) { + return inst; + } + return std::nullopt; + }; + const auto result = IR::BreadthFirstSearch(inst, pred0); + ASSERT_MSG(result, "Unable to track sharp source"); + inst = result.value(); + // If its from user data not much else to do. if (inst->GetOpcode() == IR::Opcode::GetUserData) { return SharpLocation{ .sgpr_base = u32(IR::ScalarReg::Max), @@ -289,14 +297,14 @@ SharpLocation TrackSharp(const IR::Inst* inst) { const IR::Inst* spgpr_base = inst->Arg(0).InstRecursive(); // Retrieve SGPR pair that holds sbase - const auto pred = [](const IR::Inst* inst) -> std::optional { + const auto pred1 = [](const IR::Inst* inst) -> std::optional { if (inst->GetOpcode() == IR::Opcode::GetUserData) { return inst->Arg(0).ScalarReg(); } return std::nullopt; }; - const auto base0 = IR::BreadthFirstSearch(spgpr_base->Arg(0), pred); - const auto base1 = IR::BreadthFirstSearch(spgpr_base->Arg(1), pred); + const auto base0 = IR::BreadthFirstSearch(spgpr_base->Arg(0), pred1); + const auto base1 = IR::BreadthFirstSearch(spgpr_base->Arg(1), pred1); ASSERT_MSG(base0 && base1, "Nested resource loads not supported"); // Return retrieved location. @@ -456,36 +464,26 @@ IR::Value PatchCubeCoord(IR::IREmitter& ir, const IR::Value& s, const IR::Value& } void PatchImageInstruction(IR::Block& block, IR::Inst& inst, Info& info, Descriptors& descriptors) { - std::deque insts{&inst}; - const auto& pred = [](auto opcode) -> bool { - return (opcode == IR::Opcode::CompositeConstructU32x2 || // IMAGE_SAMPLE (image+sampler) - opcode == IR::Opcode::ReadConst || // IMAGE_LOAD (image only) - opcode == IR::Opcode::GetUserData); + const auto pred = [](const IR::Inst* inst) -> std::optional { + const auto opcode = inst->GetOpcode(); + if (opcode == IR::Opcode::CompositeConstructU32x2 || // IMAGE_SAMPLE (image+sampler) + opcode == IR::Opcode::ReadConst || // IMAGE_LOAD (image only) + opcode == IR::Opcode::GetUserData) { + return inst; + } + return std::nullopt; }; - - IR::Inst* producer{}; - while (!insts.empty() && (producer = insts.front(), !pred(producer->GetOpcode()))) { - for (auto arg_idx = 0u; arg_idx < producer->NumArgs(); ++arg_idx) { - const auto arg = producer->Arg(arg_idx); - if (arg.TryInstRecursive()) { - insts.push_back(arg.InstRecursive()); - } - } - insts.pop_front(); - } - ASSERT(pred(producer->GetOpcode())); - auto [tsharp_handle, ssharp_handle] = [&] -> std::pair { - if (producer->GetOpcode() == IR::Opcode::CompositeConstructU32x2) { - return std::make_pair(producer->Arg(0).InstRecursive(), - producer->Arg(1).InstRecursive()); - } - return std::make_pair(producer, nullptr); - }(); + const auto result = IR::BreadthFirstSearch(&inst, pred); + ASSERT_MSG(result, "Unable to find image sharp source"); + const IR::Inst* producer = result.value(); + const bool has_sampler = producer->GetOpcode() == IR::Opcode::CompositeConstructU32x2; + const auto tsharp_handle = has_sampler ? producer->Arg(0).InstRecursive() : producer; // Read image sharp. const auto tsharp = TrackSharp(tsharp_handle); const auto image = info.ReadUd(tsharp.sgpr_base, tsharp.dword_offset); const auto inst_info = inst.Flags(); + ASSERT(image.GetType() != AmdGpu::ImageType::Invalid); u32 image_binding = descriptors.Add(ImageResource{ .sgpr_base = tsharp.sgpr_base, .dword_offset = tsharp.dword_offset, @@ -496,17 +494,32 @@ void PatchImageInstruction(IR::Block& block, IR::Inst& inst, Info& info, Descrip }); // Read sampler sharp. This doesn't exist for IMAGE_LOAD/IMAGE_STORE instructions - if (ssharp_handle) { + const u32 sampler_binding = [&] { + if (!has_sampler) { + return 0U; + } + const IR::Value& handle = producer->Arg(1); + // Inline sampler resource. + if (handle.IsImmediate()) { + LOG_WARNING(Render_Vulkan, "Inline sampler detected"); + return descriptors.Add(SamplerResource{ + .sgpr_base = std::numeric_limits::max(), + .dword_offset = 0, + .inline_sampler = AmdGpu::Sampler{.raw0 = handle.U32()}, + }); + } + // Normal sampler resource. + const auto ssharp_handle = handle.InstRecursive(); const auto& [ssharp_ud, disable_aniso] = TryDisableAnisoLod0(ssharp_handle); const auto ssharp = TrackSharp(ssharp_ud); - const u32 sampler_binding = descriptors.Add(SamplerResource{ + return descriptors.Add(SamplerResource{ .sgpr_base = ssharp.sgpr_base, .dword_offset = ssharp.dword_offset, .associated_image = image_binding, .disable_aniso = disable_aniso, }); - image_binding |= (sampler_binding << 16); - } + }(); + image_binding |= (sampler_binding << 16); // Patch image handle IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)}; @@ -607,7 +620,7 @@ void ResourceTrackingPass(IR::Program& program) { // Iterate resource instructions and patch them after finding the sharp. auto& info = program.info; Descriptors descriptors{info.buffers, info.images, info.samplers}; - for (IR::Block* const block : program.post_order_blocks) { + for (IR::Block* const block : program.blocks) { for (IR::Inst& inst : block->Instructions()) { if (IsBufferInstruction(inst)) { PatchBufferInstruction(*block, inst, info, descriptors); diff --git a/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp b/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp index b51ce94e..7100b384 100644 --- a/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp +++ b/src/shader_recompiler/ir/passes/shader_info_collection_pass.cpp @@ -20,11 +20,19 @@ void Visit(Info& info, IR::Inst& inst) { case IR::Opcode::LoadSharedU8: case IR::Opcode::WriteSharedU8: info.uses_shared_u8 = true; + info.uses_shared = true; break; case IR::Opcode::LoadSharedS16: case IR::Opcode::LoadSharedU16: case IR::Opcode::WriteSharedU16: info.uses_shared_u16 = true; + info.uses_shared = true; + break; + case IR::Opcode::LoadSharedU32: + case IR::Opcode::LoadSharedU64: + case IR::Opcode::WriteSharedU32: + case IR::Opcode::WriteSharedU64: + info.uses_shared = true; break; case IR::Opcode::ConvertF32F16: case IR::Opcode::BitCastF16U16: diff --git a/src/shader_recompiler/ir/reg.h b/src/shader_recompiler/ir/reg.h index d9e9b030..e3d04260 100644 --- a/src/shader_recompiler/ir/reg.h +++ b/src/shader_recompiler/ir/reg.h @@ -5,6 +5,7 @@ #include "common/assert.h" #include "common/bit_field.h" +#include "common/enum.h" #include "common/types.h" #include "video_core/amdgpu/pixel_format.h" @@ -24,6 +25,23 @@ enum class FpDenormMode : u32 { InOutAllow = 3, }; +enum class FloatClassFunc : u32 { + SignalingNan = 1 << 0, + QuietNan = 1 << 1, + NegativeInfinity = 1 << 2, + NegativeNormal = 1 << 3, + NegativeDenorm = 1 << 4, + NegativeZero = 1 << 5, + PositiveZero = 1 << 6, + PositiveDenorm = 1 << 7, + PositiveNormal = 1 << 8, + PositiveInfinity = 1 << 9, + + NaN = SignalingNan | QuietNan, + Infinity = PositiveInfinity | NegativeInfinity, +}; +DECLARE_ENUM_FLAG_OPERATORS(FloatClassFunc) + union Mode { BitField<0, 4, FpRoundMode> fp_round; BitField<4, 2, FpDenormMode> fp_denorm_single; diff --git a/src/shader_recompiler/profile.h b/src/shader_recompiler/profile.h index 54b34730..badd5455 100644 --- a/src/shader_recompiler/profile.h +++ b/src/shader_recompiler/profile.h @@ -9,6 +9,7 @@ namespace Shader { struct Profile { u32 supported_spirv{0x00010000}; + u32 subgroup_size{}; bool unified_descriptor_binding{}; bool support_descriptor_aliasing{}; bool support_int8{}; diff --git a/src/shader_recompiler/recompiler.cpp b/src/shader_recompiler/recompiler.cpp index f2834abf..d747c016 100644 --- a/src/shader_recompiler/recompiler.cpp +++ b/src/shader_recompiler/recompiler.cpp @@ -28,7 +28,8 @@ IR::BlockList GenerateBlocks(const IR::AbstractSyntaxList& syntax_list) { } IR::Program TranslateProgram(ObjectPool& inst_pool, ObjectPool& block_pool, - std::span token, const Info&& info) { + std::span token, const Info&& info, + const Profile& profile) { // Ensure first instruction is expected. constexpr u32 token_mov_vcchi = 0xBEEB03FF; ASSERT_MSG(token[0] == token_mov_vcchi, "First instruction is not s_mov_b32 vcc_hi, #imm"); @@ -49,7 +50,7 @@ IR::Program TranslateProgram(ObjectPool& inst_pool, ObjectPool& inst_pool, ObjectPool& inst_pool, ObjectPool& block_pool, - std::span code, const Info&& info); + std::span code, const Info&& info, + const Profile& profile); } // namespace Shader diff --git a/src/shader_recompiler/runtime_info.h b/src/shader_recompiler/runtime_info.h index 8824e344..277c38b7 100644 --- a/src/shader_recompiler/runtime_info.h +++ b/src/shader_recompiler/runtime_info.h @@ -97,8 +97,11 @@ using ImageResourceList = boost::container::static_vector; struct SamplerResource { u32 sgpr_base; u32 dword_offset; + AmdGpu::Sampler inline_sampler{}; u32 associated_image : 4; u32 disable_aniso : 1; + + constexpr AmdGpu::Sampler GetSsharp(const Info& info) const noexcept; }; using SamplerResourceList = boost::container::static_vector; @@ -175,6 +178,7 @@ struct Info { bool has_image_gather{}; bool has_image_query{}; bool uses_group_quad{}; + bool uses_shared{}; bool uses_shared_u8{}; bool uses_shared_u16{}; bool uses_fp16{}; @@ -196,6 +200,10 @@ constexpr AmdGpu::Buffer BufferResource::GetVsharp(const Info& info) const noexc return inline_cbuf ? inline_cbuf : info.ReadUd(sgpr_base, dword_offset); } +constexpr AmdGpu::Sampler SamplerResource::GetSsharp(const Info& info) const noexcept { + return inline_sampler ? inline_sampler : info.ReadUd(sgpr_base, dword_offset); +} + } // namespace Shader template <> diff --git a/src/video_core/amdgpu/liverpool.cpp b/src/video_core/amdgpu/liverpool.cpp index df7eec82..af1963ee 100644 --- a/src/video_core/amdgpu/liverpool.cpp +++ b/src/video_core/amdgpu/liverpool.cpp @@ -403,9 +403,11 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span dcb, std::spanWaitVoLabel([&] { return wait_reg_mem->Test(); }); } while (!wait_reg_mem->Test()) { + mapped_queues[GfxQueueId].cs_state = regs.cs_program; TracyFiberLeave; co_yield {}; TracyFiberEnter(dcb_task_name); + regs.cs_program = mapped_queues[GfxQueueId].cs_state; } break; } @@ -506,9 +508,11 @@ Liverpool::Task Liverpool::ProcessCompute(std::span acb, int vqid) { const auto* wait_reg_mem = reinterpret_cast(header); ASSERT(wait_reg_mem->engine.Value() == PM4CmdWaitRegMem::Engine::Me); while (!wait_reg_mem->Test()) { + mapped_queues[vqid].cs_state = regs.cs_program; TracyFiberLeave; co_yield {}; TracyFiberEnter(acb_task_name); + regs.cs_program = mapped_queues[vqid].cs_state; } break; } @@ -529,7 +533,6 @@ Liverpool::Task Liverpool::ProcessCompute(std::span acb, int vqid) { } void Liverpool::SubmitGfx(std::span dcb, std::span ccb) { - static constexpr u32 GfxQueueId = 0u; auto& queue = mapped_queues[GfxQueueId]; auto task = ProcessGraphics(dcb, ccb); diff --git a/src/video_core/amdgpu/liverpool.h b/src/video_core/amdgpu/liverpool.h index db2ee91c..b0285809 100644 --- a/src/video_core/amdgpu/liverpool.h +++ b/src/video_core/amdgpu/liverpool.h @@ -36,6 +36,7 @@ namespace AmdGpu { [[maybe_unused]] std::array CONCAT2(pad, __LINE__) struct Liverpool { + static constexpr u32 GfxQueueId = 0u; static constexpr u32 NumGfxRings = 1u; // actually 2, but HP is reserved by system software static constexpr u32 NumComputePipes = 7u; // actually 8, but #7 is reserved by system software static constexpr u32 NumQueuesPerPipe = 8u; @@ -1061,6 +1062,7 @@ private: struct GpuQueue { std::mutex m_access{}; std::queue submits{}; + ComputeProgram cs_state{}; }; std::array mapped_queues{}; diff --git a/src/video_core/amdgpu/pixel_format.cpp b/src/video_core/amdgpu/pixel_format.cpp index 6618e72a..6744891a 100644 --- a/src/video_core/amdgpu/pixel_format.cpp +++ b/src/video_core/amdgpu/pixel_format.cpp @@ -7,6 +7,77 @@ namespace AmdGpu { +std::string_view NameOf(DataFormat fmt) { + switch (fmt) { + case DataFormat::FormatInvalid: + return "FormatInvalid"; + case DataFormat::Format8: + return "Format8"; + case DataFormat::Format16: + return "Format16"; + case DataFormat::Format8_8: + return "Format8_8"; + case DataFormat::Format32: + return "Format32"; + case DataFormat::Format16_16: + return "Format16_16"; + case DataFormat::Format10_11_11: + return "Format10_11_11"; + case DataFormat::Format11_11_10: + return "Format11_11_10"; + case DataFormat::Format10_10_10_2: + return "Format10_10_10_2"; + case DataFormat::Format2_10_10_10: + return "Format2_10_10_10"; + case DataFormat::Format8_8_8_8: + return "Format8_8_8_8"; + case DataFormat::Format32_32: + return "Format32_32"; + case DataFormat::Format16_16_16_16: + return "Format16_16_16_16"; + case DataFormat::Format32_32_32: + return "Format32_32_32"; + case DataFormat::Format32_32_32_32: + return "Format32_32_32_32"; + case DataFormat::Format5_6_5: + return "Format5_6_5"; + case DataFormat::Format1_5_5_5: + return "Format1_5_5_5"; + case DataFormat::Format5_5_5_1: + return "Format5_5_5_1"; + case DataFormat::Format4_4_4_4: + return "Format4_4_4_4"; + case DataFormat::Format8_24: + return "Format8_24"; + case DataFormat::Format24_8: + return "Format24_8"; + case DataFormat::FormatX24_8_32: + return "FormatX24_8_32"; + case DataFormat::FormatGB_GR: + return "FormatGB_GR"; + case DataFormat::FormatBG_RG: + return "FormatBG_RG"; + case DataFormat::Format5_9_9_9: + return "Format5_9_9_9"; + case DataFormat::FormatBc1: + return "FormatBc1"; + case DataFormat::FormatBc2: + return "FormatBc2"; + case DataFormat::FormatBc3: + return "FormatBc3"; + case DataFormat::FormatBc4: + return "FormatBc4"; + case DataFormat::FormatBc5: + return "FormatBc5"; + case DataFormat::FormatBc6: + return "FormatBc6"; + case DataFormat::FormatBc7: + return "FormatBc7"; + default: + UNREACHABLE(); + } +} + std::string_view NameOf(NumberFormat fmt) { switch (fmt) { case NumberFormat::Unorm: diff --git a/src/video_core/amdgpu/pixel_format.h b/src/video_core/amdgpu/pixel_format.h index 2a38c5a0..1004ed7d 100644 --- a/src/video_core/amdgpu/pixel_format.h +++ b/src/video_core/amdgpu/pixel_format.h @@ -61,6 +61,7 @@ enum class NumberFormat : u32 { Ubscaled = 13, }; +[[nodiscard]] std::string_view NameOf(DataFormat fmt); [[nodiscard]] std::string_view NameOf(NumberFormat fmt); int NumComponents(DataFormat format); @@ -70,6 +71,16 @@ s32 ComponentOffset(DataFormat format, u32 comp); } // namespace AmdGpu +template <> +struct fmt::formatter { + constexpr auto parse(format_parse_context& ctx) { + return ctx.begin(); + } + auto format(AmdGpu::DataFormat fmt, format_context& ctx) const { + return fmt::format_to(ctx.out(), "{}", AmdGpu::NameOf(fmt)); + } +}; + template <> struct fmt::formatter { constexpr auto parse(format_parse_context& ctx) { diff --git a/src/video_core/amdgpu/resource.h b/src/video_core/amdgpu/resource.h index 6ab3306b..01271792 100644 --- a/src/video_core/amdgpu/resource.h +++ b/src/video_core/amdgpu/resource.h @@ -75,7 +75,7 @@ struct Buffer { static_assert(sizeof(Buffer) == 16); // 128bits enum class ImageType : u64 { - Buffer = 0, + Invalid = 0, Color1D = 8, Color2D = 9, Color3D = 10, @@ -88,8 +88,8 @@ enum class ImageType : u64 { constexpr std::string_view NameOf(ImageType type) { switch (type) { - case ImageType::Buffer: - return "Buffer"; + case ImageType::Invalid: + return "Invalid"; case ImageType::Color1D: return "Color1D"; case ImageType::Color2D: @@ -179,6 +179,40 @@ struct Image { return base_address << 8; } + u32 DstSelect() const { + return dst_sel_x | (dst_sel_y << 3) | (dst_sel_z << 6) | (dst_sel_w << 9); + } + + static char SelectComp(u32 sel) { + switch (sel) { + case 0: + return '0'; + case 1: + return '1'; + case 4: + return 'R'; + case 5: + return 'G'; + case 6: + return 'B'; + case 7: + return 'A'; + default: + UNREACHABLE(); + } + } + + std::string DstSelectName() const { + std::string result = "["; + u32 dst_sel = DstSelect(); + for (u32 i = 0; i < 4; i++) { + result += SelectComp(dst_sel & 7); + dst_sel >>= 3; + } + result += ']'; + return result; + } + u32 Pitch() const { return pitch + 1; } @@ -290,6 +324,7 @@ enum class BorderColor : u64 { // Table 8.12 Sampler Resource Definition struct Sampler { union { + u64 raw0; BitField<0, 3, ClampMode> clamp_x; BitField<3, 3, ClampMode> clamp_y; BitField<6, 3, ClampMode> clamp_z; @@ -309,6 +344,7 @@ struct Sampler { BitField<60, 4, u64> perf_z; }; union { + u64 raw1; BitField<0, 14, u64> lod_bias; BitField<14, 6, u64> lod_bias_sec; BitField<20, 2, Filter> xy_mag_filter; @@ -323,6 +359,10 @@ struct Sampler { BitField<62, 2, BorderColor> border_color_type; }; + operator bool() const noexcept { + return raw0 != 0 || raw1 != 0; + } + float LodBias() const noexcept { return static_cast(static_cast((lod_bias.Value() ^ 0x2000u) - 0x2000u)) / 256.0f; diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index fc7943e6..e7c39de0 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -297,6 +297,7 @@ std::span GetAllFormats() { vk::Format::eBc3UnormBlock, vk::Format::eBc4UnormBlock, vk::Format::eBc5UnormBlock, + vk::Format::eBc5SnormBlock, vk::Format::eBc7SrgbBlock, vk::Format::eBc7UnormBlock, vk::Format::eD16Unorm, @@ -308,6 +309,7 @@ std::span GetAllFormats() { vk::Format::eR8G8B8A8Srgb, vk::Format::eR8G8B8A8Uint, vk::Format::eR8G8B8A8Unorm, + vk::Format::eR8G8B8A8Snorm, vk::Format::eR8G8B8A8Uscaled, vk::Format::eR8G8Snorm, vk::Format::eR8G8Uint, @@ -335,6 +337,10 @@ std::span GetAllFormats() { vk::Format::eR32Sfloat, vk::Format::eR32Sint, vk::Format::eR32Uint, + vk::Format::eBc6HUfloatBlock, + vk::Format::eR16G16Unorm, + vk::Format::eR16G16B16A16Sscaled, + vk::Format::eR16G16Sscaled, }; return formats; } @@ -384,10 +390,17 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu if (data_format == AmdGpu::DataFormat::FormatBc5 && num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eBc5UnormBlock; } + if (data_format == AmdGpu::DataFormat::FormatBc5 && num_format == AmdGpu::NumberFormat::Snorm) { + return vk::Format::eBc5SnormBlock; + } if (data_format == AmdGpu::DataFormat::Format16_16_16_16 && num_format == AmdGpu::NumberFormat::Sint) { return vk::Format::eR16G16B16A16Sint; } + if (data_format == AmdGpu::DataFormat::Format16_16_16_16 && + num_format == AmdGpu::NumberFormat::Sscaled) { + return vk::Format::eR16G16B16A16Sscaled; + } if (data_format == AmdGpu::DataFormat::Format16_16 && num_format == AmdGpu::NumberFormat::Float) { return vk::Format::eR16G16Sfloat; @@ -496,6 +509,10 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Sint) { return vk::Format::eR16G16Sint; } + if (data_format == AmdGpu::DataFormat::Format16_16 && + num_format == AmdGpu::NumberFormat::Sscaled) { + return vk::Format::eR16G16Sscaled; + } if (data_format == AmdGpu::DataFormat::Format8_8_8_8 && num_format == AmdGpu::NumberFormat::Uscaled) { return vk::Format::eR8G8B8A8Uscaled; @@ -518,6 +535,13 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::SnormNz) { return vk::Format::eR16G16B16A16Snorm; } + if (data_format == AmdGpu::DataFormat::Format8_8_8_8 && + num_format == AmdGpu::NumberFormat::Snorm) { + return vk::Format::eR8G8B8A8Snorm; + } + if (data_format == AmdGpu::DataFormat::FormatBc6 && num_format == AmdGpu::NumberFormat::Unorm) { + return vk::Format::eBc6HUfloatBlock; + } UNREACHABLE_MSG("Unknown data_format={} and num_format={}", u32(data_format), u32(num_format)); } diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp index 51bb7f83..34f1e9cc 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp @@ -148,7 +148,7 @@ bool ComputePipeline::BindResources(Core::MemoryManager* memory, StreamBuffer& s } } for (const auto& sampler : info.samplers) { - const auto ssharp = info.ReadUd(sampler.sgpr_base, sampler.dword_offset); + const auto ssharp = sampler.GetSsharp(info); const auto vk_sampler = texture_cache.GetSampler(ssharp); image_infos.emplace_back(vk_sampler, VK_NULL_HANDLE, vk::ImageLayout::eGeneral); set_writes.push_back({ diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index eb552268..7b00a911 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -386,7 +386,7 @@ void GraphicsPipeline::BindResources(Core::MemoryManager* memory, StreamBuffer& } } for (const auto& sampler : stage.samplers) { - auto ssharp = stage.ReadUd(sampler.sgpr_base, sampler.dword_offset); + auto ssharp = sampler.GetSsharp(stage); if (sampler.disable_aniso) { const auto& tsharp = tsharps[sampler.associated_image]; if (tsharp.base_level == 0 && tsharp.last_level == 0) { diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index 09a9180e..735303a3 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -164,10 +164,11 @@ bool Instance::CreateDevice() { vk::PhysicalDeviceVulkan13Features, vk::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, vk::PhysicalDeviceDepthClipControlFeaturesEXT>(); - const vk::StructureChain properties_chain = - physical_device.getProperties2(); + const vk::StructureChain properties_chain = physical_device.getProperties2< + vk::PhysicalDeviceProperties2, vk::PhysicalDevicePortabilitySubsetPropertiesKHR, + vk::PhysicalDeviceExternalMemoryHostPropertiesEXT, vk::PhysicalDeviceVulkan11Properties>(); + subgroup_size = properties_chain.get().subgroupSize; + LOG_INFO(Render_Vulkan, "Physical device subgroup size {}", subgroup_size); features = feature_chain.get().features; if (available_extensions.empty()) { @@ -261,6 +262,7 @@ bool Instance::CreateDevice() { .shaderStorageImageExtendedFormats = features.shaderStorageImageExtendedFormats, .shaderStorageImageMultisample = features.shaderStorageImageMultisample, .shaderClipDistance = features.shaderClipDistance, + .shaderInt64 = features.shaderInt64, .shaderInt16 = features.shaderInt16, }, }, diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index 32965ddb..a8c0dcf4 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -188,6 +188,11 @@ public: return properties.limits.nonCoherentAtomSize; } + /// Returns the subgroup size of the selected physical device. + u32 SubgroupSize() const { + return subgroup_size; + } + /// Returns the maximum supported elements in a texel buffer u32 MaxTexelBufferElements() const { return properties.limits.maxTexelBufferElements; @@ -249,6 +254,7 @@ private: bool workgroup_memory_explicit_layout{}; bool color_write_en{}; u64 min_imported_host_pointer_alignment{}; + u32 subgroup_size{}; bool tooling_info{}; bool debug_utils_supported{}; bool has_nsight_graphics{}; diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 67994485..8d27d252 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -109,6 +109,7 @@ PipelineCache::PipelineCache(const Instance& instance_, Scheduler& scheduler_, pipeline_cache = instance.GetDevice().createPipelineCacheUnique({}); profile = Shader::Profile{ .supported_spirv = 0x00010600U, + .subgroup_size = instance.SubgroupSize(), .support_explicit_workgroup_layout = true, }; } @@ -268,7 +269,8 @@ std::unique_ptr PipelineCache::CreateGraphicsPipeline() { Shader::Info info = MakeShaderInfo(stage, pgm->user_data, regs); info.pgm_base = pgm->Address(); info.pgm_hash = hash; - programs[i] = Shader::TranslateProgram(inst_pool, block_pool, code, std::move(info)); + programs[i] = + Shader::TranslateProgram(inst_pool, block_pool, code, std::move(info), profile); // Compile IR to SPIR-V auto spv_code = Shader::Backend::SPIRV::EmitSPIRV(profile, programs[i], binding); @@ -308,7 +310,8 @@ std::unique_ptr PipelineCache::CreateComputePipeline() { Shader::Info info = MakeShaderInfo(Shader::Stage::Compute, cs_pgm.user_data, liverpool->regs); info.pgm_base = cs_pgm.Address(); - auto program = Shader::TranslateProgram(inst_pool, block_pool, code, std::move(info)); + auto program = + Shader::TranslateProgram(inst_pool, block_pool, code, std::move(info), profile); // Compile IR to SPIR-V u32 binding{}; diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index c64f6089..ff5e97d5 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -23,7 +23,7 @@ Rasterizer::Rasterizer(const Instance& instance_, Scheduler& scheduler_, : instance{instance_}, scheduler{scheduler_}, texture_cache{texture_cache_}, liverpool{liverpool_}, memory{Core::Memory::Instance()}, pipeline_cache{instance, scheduler, liverpool}, - vertex_index_buffer{instance, scheduler, VertexIndexFlags, 1_GB, BufferType::Upload} { + vertex_index_buffer{instance, scheduler, VertexIndexFlags, 2_GB, BufferType::Upload} { if (!Config::nullGpu()) { liverpool->BindRasterizer(this); } @@ -128,6 +128,7 @@ void Rasterizer::BeginRendering() { state.height = std::min(state.height, image.info.size.height); const bool is_clear = texture_cache.IsMetaCleared(col_buf.CmaskAddress()); + state.color_images[state.num_color_attachments] = image.image; state.color_attachments[state.num_color_attachments++] = { .imageView = *image_view.image_view, .imageLayout = vk::ImageLayout::eGeneral, @@ -152,6 +153,7 @@ void Rasterizer::BeginRendering() { const auto& image = texture_cache.GetImage(image_view.image_id); state.width = std::min(state.width, image.info.size.width); state.height = std::min(state.height, image.info.size.height); + state.depth_image = image.image; state.depth_attachment = { .imageView = *image_view.image_view, .imageLayout = image.layout, diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index e7b12d49..fb64285f 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -50,7 +50,32 @@ void Scheduler::EndRendering() { return; } is_rendering = false; + boost::container::static_vector barriers; + for (size_t i = 0; i < render_state.num_color_attachments; ++i) { + barriers.push_back(vk::ImageMemoryBarrier{ + .srcAccessMask = vk::AccessFlagBits::eColorAttachmentWrite, + .dstAccessMask = vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eShaderWrite, + .oldLayout = vk::ImageLayout::eColorAttachmentOptimal, + .newLayout = vk::ImageLayout::eColorAttachmentOptimal, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .image = render_state.color_images[i], + .subresourceRange = + { + .aspectMask = vk::ImageAspectFlagBits::eColor, + .baseMipLevel = 0, + .levelCount = VK_REMAINING_MIP_LEVELS, + .baseArrayLayer = 0, + .layerCount = VK_REMAINING_ARRAY_LAYERS, + }, + }); + } current_cmdbuf.endRendering(); + if (!barriers.empty()) { + current_cmdbuf.pipelineBarrier(vk::PipelineStageFlagBits::eColorAttachmentOutput, + vk::PipelineStageFlagBits::eFragmentShader, + vk::DependencyFlagBits::eByRegion, {}, {}, barriers); + } } void Scheduler::Flush(SubmitInfo& info) { diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h index 1e640b08..48c3af7a 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.h +++ b/src/video_core/renderer_vulkan/vk_scheduler.h @@ -15,7 +15,9 @@ class Instance; struct RenderState { std::array color_attachments{}; + std::array color_images{}; vk::RenderingAttachmentInfo depth_attachment{}; + vk::Image depth_image{}; u32 num_color_attachments{}; u32 num_depth_attachments{}; u32 width = std::numeric_limits::max(); diff --git a/src/video_core/texture_cache/image_view.cpp b/src/video_core/texture_cache/image_view.cpp index ff85a8aa..04bedaff 100644 --- a/src/video_core/texture_cache/image_view.cpp +++ b/src/video_core/texture_cache/image_view.cpp @@ -47,6 +47,20 @@ vk::ComponentSwizzle ConvertComponentSwizzle(u32 dst_sel) { } } +bool IsIdentityMapping(u32 dst_sel, u32 num_components) { + return (num_components == 1 && dst_sel == 0b100) || + (num_components == 2 && dst_sel == 0b101'100) || + (num_components == 3 && dst_sel == 0b110'101'100) || + (num_components == 4 && dst_sel == 0b111'110'101'100); +} + +vk::Format TrySwizzleFormat(vk::Format format, u32 dst_sel) { + if (format == vk::Format::eR8G8B8A8Unorm && dst_sel == 0b111100101110) { + return vk::Format::eB8G8R8A8Unorm; + } + return format; +} + ImageViewInfo::ImageViewInfo(const AmdGpu::Image& image, bool is_storage) noexcept : is_storage{is_storage} { type = ConvertImageViewType(image.GetType()); @@ -60,9 +74,16 @@ ImageViewInfo::ImageViewInfo(const AmdGpu::Image& image, bool is_storage) noexce mapping.b = ConvertComponentSwizzle(image.dst_sel_z); mapping.a = ConvertComponentSwizzle(image.dst_sel_w); // Check for unfortunate case of storage images being swizzled - if (is_storage && (mapping != vk::ComponentMapping{})) { - LOG_ERROR(Render_Vulkan, "Storage image requires swizzling"); + const u32 num_comps = AmdGpu::NumComponents(image.GetDataFmt()); + const u32 dst_sel = image.DstSelect(); + if (is_storage && !IsIdentityMapping(dst_sel, num_comps)) { mapping = vk::ComponentMapping{}; + if (auto new_format = TrySwizzleFormat(format, dst_sel); new_format != format) { + format = new_format; + return; + } + LOG_ERROR(Render_Vulkan, "Storage image (num_comps = {}) requires swizzling {}", num_comps, + image.DstSelectName()); } } diff --git a/src/video_core/texture_cache/image_view.h b/src/video_core/texture_cache/image_view.h index 590ac9be..fbc62db3 100644 --- a/src/video_core/texture_cache/image_view.h +++ b/src/video_core/texture_cache/image_view.h @@ -35,6 +35,8 @@ struct ImageViewInfo { struct Image; +constexpr Common::SlotId NULL_IMAGE_VIEW_ID{0}; + struct ImageView { explicit ImageView(const Vulkan::Instance& instance, const ImageViewInfo& info, Image& image, ImageId image_id, std::optional usage_override = {}); diff --git a/src/video_core/texture_cache/texture_cache.cpp b/src/video_core/texture_cache/texture_cache.cpp index 9131e6f1..7b8a5554 100644 --- a/src/video_core/texture_cache/texture_cache.cpp +++ b/src/video_core/texture_cache/texture_cache.cpp @@ -142,14 +142,14 @@ ImageId TextureCache::FindImage(const ImageInfo& info, bool refresh_on_create) { image_ids.push_back(image_id); }); - ASSERT_MSG(image_ids.size() <= 1, "Overlapping images not allowed!"); + // ASSERT_MSG(image_ids.size() <= 1, "Overlapping images not allowed!"); ImageId image_id{}; if (image_ids.empty()) { image_id = slot_images.insert(instance, scheduler, info); RegisterImage(image_id); } else { - image_id = image_ids[0]; + image_id = image_ids[image_ids.size() > 1 ? 1 : 0]; } Image& image = slot_images[image_id]; @@ -183,12 +183,17 @@ ImageView& TextureCache::RegisterImageView(ImageId image_id, const ImageViewInfo } ImageView& TextureCache::FindTexture(const ImageInfo& info, const ImageViewInfo& view_info) { + if (info.guest_address == 0) [[unlikely]] { + return slot_image_views[NULL_IMAGE_VIEW_ID]; + } + const ImageId image_id = FindImage(info); Image& image = slot_images[image_id]; auto& usage = image.info.usage; if (view_info.is_storage) { - image.Transit(vk::ImageLayout::eGeneral, vk::AccessFlagBits::eShaderWrite); + image.Transit(vk::ImageLayout::eGeneral, + vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eShaderWrite); usage.storage = true; } else { const auto new_layout = image.info.IsDepthStencil() @@ -206,7 +211,7 @@ ImageView& TextureCache::FindTexture(const ImageInfo& info, const ImageViewInfo& view_info_tmp.range.extent.levels > image.info.resources.levels || view_info_tmp.range.extent.layers > image.info.resources.layers) { - LOG_ERROR(Render_Vulkan, + LOG_DEBUG(Render_Vulkan, "Subresource range ({}~{},{}~{}) exceeds base image extents ({},{})", view_info_tmp.range.base.level, view_info_tmp.range.extent.levels, view_info_tmp.range.base.layer, view_info_tmp.range.extent.layers, @@ -341,7 +346,7 @@ void TextureCache::RefreshImage(Image& image) { cmdbuf.copyBufferToImage(buffer, image.image, vk::ImageLayout::eTransferDstOptimal, image_copy); image.Transit(vk::ImageLayout::eGeneral, - vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eTransferRead); + vk::AccessFlagBits::eMemoryWrite | vk::AccessFlagBits::eMemoryRead); } vk::Sampler TextureCache::GetSampler(const AmdGpu::Sampler& sampler) { From d7acb93d6f3fb4f91620067a43ba9a2e86c8b54f Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Tue, 30 Jul 2024 22:55:58 -0600 Subject: [PATCH 28/44] - Implemented sceSaveDataSetParam and sceSaveDataGetParam - Fixed sceSaveDataDirNameSearch --- src/core/libraries/save_data/savedata.cpp | 158 +++++++++++++++++----- src/core/libraries/save_data/savedata.h | 11 +- 2 files changed, 131 insertions(+), 38 deletions(-) diff --git a/src/core/libraries/save_data/savedata.cpp b/src/core/libraries/save_data/savedata.cpp index a8519ab7..64237994 100644 --- a/src/core/libraries/save_data/savedata.cpp +++ b/src/core/libraries/save_data/savedata.cpp @@ -15,7 +15,7 @@ #include "error_codes.h" namespace Libraries::SaveData { - +bool is_rw_mode = false; static constexpr std::string_view g_mount_point = "/savedata0"; // temp mount point (todo) std::string game_serial; @@ -180,25 +180,27 @@ int PS4_SYSV_ABI sceSaveDataDirNameSearch(const OrbisSaveDataDirNameSearchCond* OrbisSaveDataDirNameSearchResult* result) { if (cond == nullptr) return ORBIS_SAVE_DATA_ERROR_PARAMETER; - LOG_ERROR(Lib_SaveData, "TODO sceSaveDataDirNameSearch: Add params"); + LOG_INFO(Lib_SaveData, "called"); const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / std::to_string(cond->userId) / game_serial; if (!mount_dir.empty() && std::filesystem::exists(mount_dir)) { - if (cond->dirName == nullptr) { // look for all dirs if no dir is provided. + if (cond->dirName == nullptr || std::string_view(cond->dirName->data) + .empty()) { // look for all dirs if no dir is provided. for (int i = 0; const auto& entry : std::filesystem::directory_iterator(mount_dir)) { if (std::filesystem::is_directory(entry.path()) && entry.path().filename().string() != "sdmemory") { // sceSaveDataDirNameSearch does not search for dataMemory1/2 dirs. - i++; - result->dirNamesNum = 0; // why is it 1024? is it max? // copy dir name to be used by sceSaveDataMount in read mode. strncpy(result->dirNames[i].data, entry.path().filename().string().c_str(), 32); - result->hitNum = i + 1; - result->dirNamesNum = i + 1; - result->setNum = i + 1; + i++; + result->hitNum = i; + result->dirNamesNum = i; + result->setNum = i; } } } else { // Need a game to test. + LOG_ERROR(Lib_SaveData, "Check Me. sceSaveDataDirNameSearch: dirName = {}", + cond->dirName->data); strncpy(result->dirNames[0].data, cond->dirName->data, 32); result->hitNum = 1; result->dirNamesNum = 1; @@ -305,8 +307,51 @@ int PS4_SYSV_ABI sceSaveDataGetMountInfo(const OrbisSaveDataMountPoint* mountPoi return ORBIS_OK; } -int PS4_SYSV_ABI sceSaveDataGetParam() { - LOG_ERROR(Lib_SaveData, "(STUBBED) called"); +int PS4_SYSV_ABI sceSaveDataGetParam(const OrbisSaveDataMountPoint* mountPoint, + const OrbisSaveDataParamType paramType, void* paramBuf, + const size_t paramBufSize, size_t* gotSize) { + + if (mountPoint == nullptr) + return ORBIS_SAVE_DATA_ERROR_PARAMETER; + + auto* mnt = Common::Singleton::Instance(); + const auto mount_dir = mnt->GetHostPath(mountPoint->data); + Common::FS::IOFile file(mount_dir / "param.txt", Common::FS::FileAccessMode::Read); + OrbisSaveDataParam params; + file.Read(params); + + LOG_INFO(Lib_SaveData, "called"); + + switch (paramType) { + case ORBIS_SAVE_DATA_PARAM_TYPE_ALL: { + memcpy(paramBuf, ¶ms, sizeof(OrbisSaveDataParam)); + *gotSize = sizeof(OrbisSaveDataParam); + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_TITLE: { + std::memcpy(paramBuf, ¶ms.title, ORBIS_SAVE_DATA_TITLE_MAXSIZE); + *gotSize = ORBIS_SAVE_DATA_TITLE_MAXSIZE; + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_SUB_TITLE: { + std::memcpy(paramBuf, ¶ms.subTitle, ORBIS_SAVE_DATA_SUBTITLE_MAXSIZE); + *gotSize = ORBIS_SAVE_DATA_SUBTITLE_MAXSIZE; + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_DETAIL: { + std::memcpy(paramBuf, ¶ms.detail, ORBIS_SAVE_DATA_DETAIL_MAXSIZE); + *gotSize = ORBIS_SAVE_DATA_DETAIL_MAXSIZE; + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_USER_PARAM: { + std::memcpy(paramBuf, ¶ms.userParam, sizeof(u32)); + *gotSize = sizeof(u32); + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_MTIME: { + std::memcpy(paramBuf, ¶ms.mtime, sizeof(time_t)); + *gotSize = sizeof(time_t); + } break; + default: { + UNREACHABLE_MSG("Unknown Param = {}", paramType); + } break; + } + return ORBIS_OK; } @@ -445,6 +490,7 @@ s32 saveDataMount(u32 user_id, char* dir_name, u32 mount_mode, case ORBIS_SAVE_DATA_MOUNT_MODE_RDWR: case ORBIS_SAVE_DATA_MOUNT_MODE_RDWR | ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF: case ORBIS_SAVE_DATA_MOUNT_MODE_RDONLY | ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF: { + is_rw_mode = (mount_mode == ORBIS_SAVE_DATA_MOUNT_MODE_RDWR) ? true : false; if (!std::filesystem::exists(mount_dir)) { return ORBIS_SAVE_DATA_ERROR_NOT_FOUND; } @@ -462,10 +508,6 @@ s32 saveDataMount(u32 user_id, char* dir_name, u32 mount_mode, case ORBIS_SAVE_DATA_MOUNT_MODE_CREATE | ORBIS_SAVE_DATA_MOUNT_MODE_DESTRUCT_OFF | ORBIS_SAVE_DATA_MOUNT_MODE_COPY_ICON: { if (std::filesystem::exists(mount_dir)) { - g_mount_point.copy(mount_result->mount_point.data, 16); - mnt->Mount(mount_dir, mount_result->mount_point.data); - mount_result->required_blocks = 0; - mount_result->mount_status = 0; return ORBIS_SAVE_DATA_ERROR_EXISTS; } if (std::filesystem::create_directories(mount_dir)) { @@ -485,7 +527,7 @@ s32 saveDataMount(u32 user_id, char* dir_name, u32 mount_mode, mount_result->mount_status = 1; } break; default: - UNREACHABLE(); + UNREACHABLE_MSG("Unknown mount mode = {}", mount_mode); } mount_result->required_blocks = 0; @@ -585,15 +627,46 @@ int PS4_SYSV_ABI sceSaveDataSetEventInfo() { int PS4_SYSV_ABI sceSaveDataSetParam(const OrbisSaveDataMountPoint* mountPoint, OrbisSaveDataParamType paramType, const void* paramBuf, size_t paramBufSize) { - auto* mnt = Common::Singleton::Instance(); - const auto mount_dir = mnt->GetHostPath(mountPoint->data); - LOG_INFO(Lib_SaveData, "called = {}, mountPoint->data = {}", mount_dir.string(), - mountPoint->data); + if (paramBuf == nullptr) + return ORBIS_SAVE_DATA_ERROR_PARAMETER; - if (paramBuf != nullptr) { - Common::FS::IOFile file(mount_dir / "param.txt", Common::FS::FileAccessMode::Write); - file.WriteRaw(paramBuf, paramBufSize); + auto* mnt = Common::Singleton::Instance(); + const auto mount_dir = mnt->GetHostPath(mountPoint->data) / "param.txt"; + OrbisSaveDataParam params; + if (std::filesystem::exists(mount_dir)) { + Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Read); + file.ReadRaw(¶ms, sizeof(OrbisSaveDataParam)); } + + LOG_INFO(Lib_SaveData, "called"); + + switch (paramType) { + case ORBIS_SAVE_DATA_PARAM_TYPE_ALL: { + memcpy(¶ms, paramBuf, sizeof(OrbisSaveDataParam)); + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_TITLE: { + strncpy(params.title, static_cast(paramBuf), paramBufSize); + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_SUB_TITLE: { + strncpy(params.subTitle, static_cast(paramBuf), paramBufSize); + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_DETAIL: { + strncpy(params.detail, static_cast(paramBuf), paramBufSize); + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_USER_PARAM: { + params.userParam = *(static_cast(paramBuf)); + } break; + case ORBIS_SAVE_DATA_PARAM_TYPE_MTIME: { + params.mtime = *(static_cast(paramBuf)); + } break; + default: { + UNREACHABLE_MSG("Unknown Param = {}", paramType); + } + } + + Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Write); + file.WriteRaw(¶ms, sizeof(OrbisSaveDataParam)); + return ORBIS_OK; } @@ -610,7 +683,7 @@ int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory(const u32 userId, const void* buf, Common::FS::IOFile file(mount_dir, Common::FS::FileAccessMode::Write); file.Seek(offset); - file.WriteRaw((void*)buf, bufSize); + file.WriteRaw(buf, bufSize); return ORBIS_OK; } @@ -624,7 +697,7 @@ int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory2(const OrbisSaveDataMemorySet2* se if (!file.IsOpen()) return -1; file.Seek(setParam->data->offset); - file.WriteRaw((void*)setParam->data->buf, setParam->data->bufSize); + file.WriteRaw(setParam->data->buf, setParam->data->bufSize); } if (setParam->param != nullptr) { @@ -634,7 +707,7 @@ int PS4_SYSV_ABI sceSaveDataSetSaveDataMemory2(const OrbisSaveDataMemorySet2* se if (setParam->icon != nullptr) { Common::FS::IOFile file(mount_dir / "save_icon.png", Common::FS::FileAccessMode::Write); - file.WriteRaw((void*)setParam->icon->buf, setParam->icon->bufSize); + file.WriteRaw(setParam->icon->buf, setParam->icon->bufSize); } return ORBIS_OK; @@ -719,16 +792,17 @@ int PS4_SYSV_ABI sceSaveDataTransferringMount() { } s32 PS4_SYSV_ABI sceSaveDataUmount(const OrbisSaveDataMountPoint* mountPoint) { + LOG_INFO(Lib_SaveData, "mountPoint = {}", std::string(mountPoint->data)); if (std::string(mountPoint->data).empty()) { return ORBIS_SAVE_DATA_ERROR_NOT_MOUNTED; } const auto& mount_dir = Common::FS::GetUserPath(Common::FS::PathType::SaveDataDir) / std::to_string(1) / game_serial / mountPoint->data; auto* mnt = Common::Singleton::Instance(); - + const auto& guest_path = mnt->GetHostPath(mountPoint->data); + if (guest_path.empty()) + return ORBIS_SAVE_DATA_ERROR_NOT_MOUNTED; mnt->Unmount(mount_dir, mountPoint->data); - LOG_INFO(Lib_SaveData, "mountPoint = {}", std::string(mountPoint->data)); - return ORBIS_OK; } @@ -738,23 +812,33 @@ int PS4_SYSV_ABI sceSaveDataUmountSys() { } int PS4_SYSV_ABI sceSaveDataUmountWithBackup(const OrbisSaveDataMountPoint* mountPoint) { - LOG_ERROR(Lib_SaveData, "called = {}", std::string(mountPoint->data)); + LOG_INFO(Lib_SaveData, "called mount = {}, is_rw_mode = {}", std::string(mountPoint->data), + is_rw_mode); auto* mnt = Common::Singleton::Instance(); const auto mount_dir = mnt->GetHostPath(mountPoint->data); if (!std::filesystem::exists(mount_dir)) { return ORBIS_SAVE_DATA_ERROR_NOT_FOUND; } + // leave disabled for now. and just unmount. - std::filesystem::create_directories(mount_dir.parent_path() / "backup"); + /* if (is_rw_mode) { // backup is done only when mount mode is ReadWrite. + auto backup_path = mount_dir; + std::string save_data_dir = (mount_dir.string() + "_backup"); + backup_path.replace_filename(save_data_dir); - for (const auto& entry : std::filesystem::recursive_directory_iterator(mount_dir)) { - const auto& path = entry.path(); - const auto target_path = mount_dir.parent_path() / "backup"; - if (std::filesystem::is_regular_file(path)) { - std::filesystem::copy(path, target_path, - std::filesystem::copy_options::overwrite_existing); + std::filesystem::create_directories(backup_path); + + for (const auto& entry : std::filesystem::recursive_directory_iterator(mount_dir)) { + const auto& path = entry.path(); + if (std::filesystem::is_regular_file(path)) { + std::filesystem::copy(path, save_data_dir, + std::filesystem::copy_options::overwrite_existing); + } } - } + }*/ + const auto& guest_path = mnt->GetHostPath(mountPoint->data); + if (guest_path.empty()) + return ORBIS_SAVE_DATA_ERROR_NOT_MOUNTED; mnt->Unmount(mount_dir, mountPoint->data); return ORBIS_OK; diff --git a/src/core/libraries/save_data/savedata.h b/src/core/libraries/save_data/savedata.h index f342d0dd..9b3cf900 100644 --- a/src/core/libraries/save_data/savedata.h +++ b/src/core/libraries/save_data/savedata.h @@ -242,6 +242,13 @@ struct OrbisSaveDataMemorySync { u8 reserved[28]; }; +constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_ALL = 0; +constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_TITLE = 1; +constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_SUB_TITLE = 2; +constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_DETAIL = 3; +constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_USER_PARAM = 4; +constexpr int ORBIS_SAVE_DATA_PARAM_TYPE_MTIME = 5; + int PS4_SYSV_ABI sceSaveDataAbort(); int PS4_SYSV_ABI sceSaveDataBackup(); int PS4_SYSV_ABI sceSaveDataBindPsnAccount(); @@ -291,7 +298,9 @@ int PS4_SYSV_ABI sceSaveDataGetFormat(); int PS4_SYSV_ABI sceSaveDataGetMountedSaveDataCount(); int PS4_SYSV_ABI sceSaveDataGetMountInfo(const OrbisSaveDataMountPoint* mountPoint, OrbisSaveDataMountInfo* info); -int PS4_SYSV_ABI sceSaveDataGetParam(); +int PS4_SYSV_ABI sceSaveDataGetParam(const OrbisSaveDataMountPoint* mountPoint, + const OrbisSaveDataParamType paramType, void* paramBuf, + const size_t paramBufSize, size_t* gotSize); int PS4_SYSV_ABI sceSaveDataGetProgress(); int PS4_SYSV_ABI sceSaveDataGetSaveDataCount(); int PS4_SYSV_ABI sceSaveDataGetSaveDataMemory(const u32 userId, void* buf, const size_t bufSize, From d017bab21ec15e60bb011ac6c2fe369a6db22d9e Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 31 Jul 2024 00:21:23 -0600 Subject: [PATCH 29/44] Kernel: added sceKernelConvertLocaltimeToUtc --- src/core/libraries/kernel/time_management.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/core/libraries/kernel/time_management.cpp b/src/core/libraries/kernel/time_management.cpp index bc1617d3..c4854937 100644 --- a/src/core/libraries/kernel/time_management.cpp +++ b/src/core/libraries/kernel/time_management.cpp @@ -214,6 +214,22 @@ int PS4_SYSV_ABI posix_clock_getres(u32 clock_id, OrbisKernelTimespec* res) { return SCE_KERNEL_ERROR_EINVAL; } +int PS4_SYSV_ABI sceKernelConvertLocaltimeToUtc(time_t param_1, int64_t param_2, time_t* seconds, + OrbisKernelTimezone* timezone, int* dst_seconds) { + LOG_INFO(Kernel, "called"); + if (timezone) { + sceKernelGettimezone(timezone); + param_1 -= (timezone->tz_minuteswest + timezone->tz_dsttime) * 60; + if (seconds) + *seconds = param_1; + if (dst_seconds) + *dst_seconds = timezone->tz_dsttime * 60; + } else { + return SCE_KERNEL_ERROR_EINVAL; + } + return SCE_OK; +} + void timeSymbolsRegister(Core::Loader::SymbolsResolver* sym) { clock = std::make_unique(); initial_ptc = clock->GetUptime(); @@ -239,6 +255,7 @@ void timeSymbolsRegister(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("lLMT9vJAck0", "libkernel", 1, "libkernel", 1, 1, posix_clock_gettime); LIB_FUNCTION("lLMT9vJAck0", "libScePosix", 1, "libkernel", 1, 1, posix_clock_gettime); LIB_FUNCTION("smIj7eqzZE8", "libScePosix", 1, "libkernel", 1, 1, posix_clock_getres); + LIB_FUNCTION("0NTHN1NKONI", "libkernel", 1, "libkernel", 1, 1, sceKernelConvertLocaltimeToUtc); } } // namespace Libraries::Kernel From 51c89a9958fc357d1aa4b27ded6f0c03df53f5bf Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 31 Jul 2024 00:32:50 -0600 Subject: [PATCH 30/44] added data_format=10 and num_format=5 --- src/video_core/renderer_vulkan/liverpool_to_vk.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index e7c39de0..ea6ab4a5 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -542,6 +542,10 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu if (data_format == AmdGpu::DataFormat::FormatBc6 && num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eBc6HUfloatBlock; } + if (data_format == AmdGpu::DataFormat::Format8_8_8_8 && + num_format == AmdGpu::NumberFormat::Sint) { + return vk::Format::eR8G8B8A8Sint; + } UNREACHABLE_MSG("Unknown data_format={} and num_format={}", u32(data_format), u32(num_format)); } From ec1335911b85664256ad72cbb686648730ee0b2a Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 31 Jul 2024 01:24:44 -0600 Subject: [PATCH 31/44] added data_format=1 and num_format=9 --- src/video_core/renderer_vulkan/liverpool_to_vk.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index ea6ab4a5..bdb0ed95 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -546,6 +546,9 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Sint) { return vk::Format::eR8G8B8A8Sint; } + if (data_format == AmdGpu::DataFormat::Format8 && num_format == AmdGpu::NumberFormat::Srgb) { + return vk::Format::eR8Srgb; + } UNREACHABLE_MSG("Unknown data_format={} and num_format={}", u32(data_format), u32(num_format)); } From 413402600b20c2faad278fce1dd563e9a226ca54 Mon Sep 17 00:00:00 2001 From: raziel1000 Date: Wed, 31 Jul 2024 02:07:02 -0600 Subject: [PATCH 32/44] missing eR8Srgb --- src/video_core/renderer_vulkan/liverpool_to_vk.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index bdb0ed95..e4539123 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -317,6 +317,7 @@ std::span GetAllFormats() { vk::Format::eR8Sint, vk::Format::eR8Uint, vk::Format::eR8Unorm, + vk::Format::eR8Srgb, vk::Format::eR16G16B16A16Sfloat, vk::Format::eR16G16B16A16Sint, vk::Format::eR16G16B16A16Snorm, From a7f2f09a446b124e1fd9b3079b0ea6588c8270dc Mon Sep 17 00:00:00 2001 From: Xphalnos <164882787+Xphalnos@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:25:55 +0200 Subject: [PATCH 33/44] Reorganization of includes (#348) * Reorganization of includes * fix --- src/audio_core/sdl_audio.cpp | 4 ++-- src/emulator.cpp | 14 ++++---------- src/emulator.h | 2 +- src/input/controller.cpp | 1 + src/main.cpp | 2 +- src/qt_gui/elf_viewer.cpp | 1 + src/qt_gui/elf_viewer.h | 2 +- src/qt_gui/main.cpp | 5 ++--- src/qt_gui/main_window.h | 2 +- 9 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/audio_core/sdl_audio.cpp b/src/audio_core/sdl_audio.cpp index 0d494707..141d338e 100644 --- a/src/audio_core/sdl_audio.cpp +++ b/src/audio_core/sdl_audio.cpp @@ -4,8 +4,8 @@ #include #include #include -#include -#include +#include "common/assert.h" +#include "core/libraries/error_codes.h" #include "sdl_audio.h" namespace Audio { diff --git a/src/emulator.cpp b/src/emulator.cpp index 5b162e05..374e0e84 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -1,14 +1,8 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include -#include -#include -#include -#include -#include -#include -#include +#include + #include "common/config.h" #include "common/debug.h" #include "common/logging/backend.h" @@ -18,6 +12,7 @@ #include "common/polyfill_thread.h" #include "common/singleton.h" #include "common/version.h" +#include "core/file_format/playgo_chunk.h" #include "core/file_format/psf.h" #include "core/file_format/splash.h" #include "core/file_sys/fs.h" @@ -27,13 +22,12 @@ #include "core/libraries/libc_internal/libc_internal.h" #include "core/libraries/libs.h" #include "core/libraries/rtc/rtc.h" +#include "core/libraries/videoout/video_out.h" #include "core/linker.h" #include "core/memory.h" #include "emulator.h" #include "video_core/renderdoc.h" -#include - Frontend::WindowSDL* g_window = nullptr; namespace Core { diff --git a/src/emulator.h b/src/emulator.h index 323170e3..01bce7e7 100644 --- a/src/emulator.h +++ b/src/emulator.h @@ -6,7 +6,7 @@ #include #include -#include +#include "common/singleton.h" #include "core/linker.h" #include "input/controller.h" #include "sdl_window.h" diff --git a/src/input/controller.cpp b/src/input/controller.cpp index 7bfecadc..247e08ce 100644 --- a/src/input/controller.cpp +++ b/src/input/controller.cpp @@ -4,6 +4,7 @@ #include "core/libraries/kernel/time_management.h" #include "core/libraries/pad/pad.h" #include "input/controller.h" + namespace Input { GameController::GameController() { diff --git a/src/main.cpp b/src/main.cpp index c7210ac5..9df14f13 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,8 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include #include +#include "emulator.h" int main(int argc, char* argv[]) { if (argc == 1) { diff --git a/src/qt_gui/elf_viewer.cpp b/src/qt_gui/elf_viewer.cpp index 1674e1ab..47a25914 100644 --- a/src/qt_gui/elf_viewer.cpp +++ b/src/qt_gui/elf_viewer.cpp @@ -3,6 +3,7 @@ #include #include "elf_viewer.h" + ElfViewer::ElfViewer(QWidget* parent) : QTableWidget(parent) { dir_list_std = Config::getElfViewer(); for (const auto& str : dir_list_std) { diff --git a/src/qt_gui/elf_viewer.h b/src/qt_gui/elf_viewer.h index 15aeb55f..fbf14d30 100644 --- a/src/qt_gui/elf_viewer.h +++ b/src/qt_gui/elf_viewer.h @@ -14,8 +14,8 @@ #include #include #include +#include "core/loader/elf.h" #include "game_list_frame.h" -#include "src/core/loader/elf.h" class ElfViewer : public QTableWidget { Q_OBJECT diff --git a/src/qt_gui/main.cpp b/src/qt_gui/main.cpp index ea3f27f8..15a06c86 100644 --- a/src/qt_gui/main.cpp +++ b/src/qt_gui/main.cpp @@ -2,15 +2,14 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#include #include "common/config.h" #include "core/file_sys/fs.h" +#include "emulator.h" #include "qt_gui/game_install_dialog.h" #include "qt_gui/main_window.h" -#include -#include - // Custom message handler to ignore Qt logs void customMessageHandler(QtMsgType, const QMessageLogContext&, const QString&) {} diff --git a/src/qt_gui/main_window.h b/src/qt_gui/main_window.h index 27d14b93..a7013738 100644 --- a/src/qt_gui/main_window.h +++ b/src/qt_gui/main_window.h @@ -9,13 +9,13 @@ #include #include #include -#include #include #include "common/config.h" #include "common/path_util.h" #include "core/file_format/psf.h" #include "core/file_sys/fs.h" #include "elf_viewer.h" +#include "emulator.h" #include "game_grid_frame.h" #include "game_info.h" #include "game_list_frame.h" From 0fe766db6cf9b3c294a621a6cbe743cc99c47ad0 Mon Sep 17 00:00:00 2001 From: Dzmitry Dubrova Date: Wed, 31 Jul 2024 14:01:22 +0300 Subject: [PATCH 34/44] core: Implement sceRandomGetRandomNumber (#350) --- CMakeLists.txt | 5 +++++ src/common/logging/types.h | 1 + src/core/libraries/error_codes.h | 3 +++ src/core/libraries/libs.cpp | 2 ++ src/core/libraries/random/random.cpp | 27 +++++++++++++++++++++++++++ src/core/libraries/random/random.h | 17 +++++++++++++++++ 6 files changed, 55 insertions(+) create mode 100644 src/core/libraries/random/random.cpp create mode 100644 src/core/libraries/random/random.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 60dad68a..49376076 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -222,6 +222,10 @@ set(PLAYGO_LIB src/core/libraries/playgo/playgo.cpp src/core/libraries/playgo/playgo_types.h ) +set(RANDOM_LIB src/core/libraries/random/random.cpp + src/core/libraries/random/random.h +) + set(USBD_LIB src/core/libraries/usbd/usbd.cpp src/core/libraries/usbd/usbd.h ) @@ -334,6 +338,7 @@ set(CORE src/core/aerolib/stubs.cpp ${NP_LIBS} ${PNG_LIB} ${PLAYGO_LIB} + ${RANDOM_LIB} ${USBD_LIB} ${MISC_LIBS} ${DIALOGS_LIB} diff --git a/src/common/logging/types.h b/src/common/logging/types.h index 33e52fd4..dccb838a 100644 --- a/src/common/logging/types.h +++ b/src/common/logging/types.h @@ -73,6 +73,7 @@ enum class Class : u8 { Lib_DiscMap, ///< The LibSceDiscMap implementation. Lib_Png, ///< The LibScePng implementation. Lib_PlayGo, ///< The LibScePlayGo implementation. + Lib_Random, ///< The libSceRandom implementation. Lib_Usbd, ///< The LibSceUsbd implementation. Lib_Ajm, ///< The LibSceAjm implementation. Lib_ErrorDialog, ///< The LibSceErrorDialog implementation. diff --git a/src/core/libraries/error_codes.h b/src/core/libraries/error_codes.h index 63016213..5eabaaf6 100644 --- a/src/core/libraries/error_codes.h +++ b/src/core/libraries/error_codes.h @@ -233,6 +233,9 @@ constexpr int SCE_KERNEL_ERROR_ESDKVERSION = 0x80020063; constexpr int SCE_KERNEL_ERROR_ESTART = 0x80020064; constexpr int SCE_KERNEL_ERROR_ESTOP = 0x80020065; +// libSceRandom error codes +constexpr int SCE_RANDOM_ERROR_INVALID = 0x817C0016; + // videoOut constexpr int SCE_VIDEO_OUT_ERROR_INVALID_VALUE = 0x80290001; // invalid argument constexpr int SCE_VIDEO_OUT_ERROR_INVALID_ADDRESS = 0x80290002; // invalid addresses diff --git a/src/core/libraries/libs.cpp b/src/core/libraries/libs.cpp index 47073b2c..20efd3c0 100644 --- a/src/core/libraries/libs.cpp +++ b/src/core/libraries/libs.cpp @@ -20,6 +20,7 @@ #include "core/libraries/np_trophy/np_trophy.h" #include "core/libraries/pad/pad.h" #include "core/libraries/playgo/playgo.h" +#include "core/libraries/random/random.h" #include "core/libraries/rtc/rtc.h" #include "core/libraries/save_data/savedata.h" #include "core/libraries/screenshot/screenshot.h" @@ -71,6 +72,7 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) { Libraries::AppContent::RegisterlibSceAppContent(sym); Libraries::PngDec::RegisterlibScePngDec(sym); Libraries::PlayGo::RegisterlibScePlayGo(sym); + Libraries::Random::RegisterlibSceRandom(sym); Libraries::Usbd::RegisterlibSceUsbd(sym); Libraries::Pad::RegisterlibScePad(sym); Libraries::Ajm::RegisterlibSceAjm(sym); diff --git a/src/core/libraries/random/random.cpp b/src/core/libraries/random/random.cpp new file mode 100644 index 00000000..8147c518 --- /dev/null +++ b/src/core/libraries/random/random.cpp @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/logging/log.h" +#include "core/libraries/error_codes.h" +#include "core/libraries/libs.h" +#include "random.h" + +namespace Libraries::Random { + +s32 PS4_SYSV_ABI sceRandomGetRandomNumber(u8* buf, size_t size) { + LOG_TRACE(Lib_Random, "called"); + if (size > SCE_RANDOM_MAX_SIZE) { + return SCE_RANDOM_ERROR_INVALID; + } + + for (auto i = 0; i < size; ++i) { + buf[i] = std::rand() & 0xFF; + } + return ORBIS_OK; +} + +void RegisterlibSceRandom(Core::Loader::SymbolsResolver* sym) { + LIB_FUNCTION("PI7jIZj4pcE", "libSceRandom", 1, "libSceRandom", 1, 1, sceRandomGetRandomNumber); +}; + +} // namespace Libraries::Random diff --git a/src/core/libraries/random/random.h b/src/core/libraries/random/random.h new file mode 100644 index 00000000..b5f87f87 --- /dev/null +++ b/src/core/libraries/random/random.h @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include "common/types.h" + +namespace Core::Loader { +class SymbolsResolver; +} + +namespace Libraries::Random { +constexpr int32_t SCE_RANDOM_MAX_SIZE = 64; + +s32 PS4_SYSV_ABI sceRandomGetRandomNumber(u8* buf, size_t size); + +void RegisterlibSceRandom(Core::Loader::SymbolsResolver* sym); +} // namespace Libraries::Random \ No newline at end of file From 205c0b961b09845cfff5cfc652cf1b402b361185 Mon Sep 17 00:00:00 2001 From: Xphalnos <164882787+Xphalnos@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:43:30 +0200 Subject: [PATCH 35/44] Adding macOS to readme + minor changes --- README.md | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index cf7d9f9b..7089b3c0 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ SPDX-License-Identifier: GPL-2.0-or-later # shadPS4 -shadPS4 is an early PS4 emulator for Windows and Linux written in C++ +shadPS4 is an early **PlayStation 4** emulator for **Windows**, **Linux** and **macOS** written in C++ If you encounter problems or have doubts, do not hesitate to look at the [**Quickstart**](https://github.com/shadps4-emu/shadPS4/blob/main/documents/Quickstart/Quickstart.md). @@ -42,13 +42,13 @@ To verify that a game works, you can look at [**shadPS4 Game Compatibility**](ht To discuss shadPS4 development or suggest ideas, join the [**Discord server**](https://discord.gg/MyZRaBngxA). -Check us on [**X (twitter)**](https://x.com/shadps4) or on our [**website**](https://shadps4.net/). +To get the latest news, go to our [**X (twitter)**](https://x.com/shadps4) or our [**website**](https://shadps4.net/). # Status In development, small games are working like [**Sonic Mania**](https://www.youtube.com/watch?v=AAHoNzhHyCU), [**Undertale**](https://youtu.be/5zIvdy65Ro4), [**Dysmantle**](https://youtu.be/b9xzhLBdESE) and others... -# Why? +# Why The project started as a fun project. Due to limited free time, it will probably take a while before shadPS4 is able to run anything decent, but we're trying to make small, regular commits. @@ -64,20 +64,37 @@ Check the build instructions for [**Linux**](https://github.com/shadps4-emu/shad ## Build status -|Windows|Build status| -|--------|------------| +
+Windows + +| Windows | Build status | +|--------|--------| |Windows SDL Build|[![Windows-sdl](https://github.com/shadps4-emu/shadPS4/actions/workflows/windows.yml/badge.svg)](https://github.com/shadps4-emu/shadPS4/actions/workflows/windows.yml) |Windows Qt Build|[![Windows-qt](https://github.com/shadps4-emu/shadPS4/actions/workflows/windows-qt.yml/badge.svg)](https://github.com/shadps4-emu/shadPS4/actions/workflows/windows-qt.yml) +
-|Linux|Build status| -|--------|------------| +
+Linux + +| Linux | Build status | +|--------|--------| |Linux SDL Build|[![Linux-sdl](https://github.com/shadps4-emu/shadPS4/actions/workflows/linux.yml/badge.svg)](https://github.com/shadps4-emu/shadPS4/actions/workflows/linux.yml) |Linux Qt Build|[![Linux-qt](https://github.com/shadps4-emu/shadPS4/actions/workflows/linux-qt.yml/badge.svg)](https://github.com/shadps4-emu/shadPS4/actions/workflows/linux-qt.yml) +
+ +
+macOS + +| macOS | Build status | +|--------|--------| +|macOS SDL Build|[![macOS-sdl](https://github.com/shadps4-emu/shadPS4/actions/workflows/macos.yml/badge.svg)](https://github.com/shadps4-emu/shadPS4/actions/workflows/macos.yml) +|macOS Qt Build|[![macOS-qt](https://github.com/shadps4-emu/shadPS4/actions/workflows/macos-qt.yml/badge.svg)](https://github.com/shadps4-emu/shadPS4/actions/workflows/macos-qt.yml) +
# Keyboard Mapping | Controller button | Keyboard | -| ------------- | ------------- | +|-------------|-------------| LEFT AXIS UP | W | LEFT AXIS DOWN | S | LEFT AXIS LEFT | A | @@ -123,7 +140,7 @@ Open a PR and we'll check it :) # Contributors - + # Sister Projects From 9968d03b90939a74e24e44219b82a38d33ce27d7 Mon Sep 17 00:00:00 2001 From: Xphalnos <164882787+Xphalnos@users.noreply.github.com> Date: Wed, 31 Jul 2024 18:14:22 +0200 Subject: [PATCH 36/44] Better logo for shadPS4 --- .github/shadps4.png | Bin 201838 -> 133377 bytes src/images/shadps4.ico | Bin 270398 -> 74814 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/shadps4.png b/.github/shadps4.png index 86fa592d57c986ac4ba3b0aeecaf78562bc7e149..7ad301d4c66869ba0dd40378ca461ab5bc5f67d8 100644 GIT binary patch literal 133377 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

et(g3Ke^uc$be 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 LSLLgcUF81*>Ykx~ literal 201838 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%0D` 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Ⓢ)lD3tNw}_S)%oSmK-I}U zJyXa*Kp!mFApVr*egg%7T(JMQoj?{0nLzAYoEG^aTX-Q10+?jIl;HDwuoWdQ>JRw^ zNVEI^ljdPxJ|vc|2D#rKF|0p^@zT+|?fpgh!+^i*<_k)+}YgaF+rh2#P& zu|KM<{{E0rigY!v;aFIO16&Pro|r!rL}WSX|A$(&6N{@cnrSWnsbNyvbccUhdYf1n zD`3Cmmd3tX{Kd7uQM>>rPL0h`iu^Y`BIGaJ*uaqZUB{Whe6WOE4S{{gXnr3L|7f#y zz^@Yf@2ELj1gwTQIAXGI$h~)l`0PZ{GPxeU)WR@h4gC75AY&_XQ6Fw7;zmH2iqY4x z**QKC{w;FzHE0`ugPsBQ^s8>|=<+rtCmTtA1{WBzxHT_hULAW4RWf|-=Q90-Mk})A zWXZDuF9t4x_&ht4!vj`Lzv@IFiJSmVoPxED!X-2bw2~?-Lk9*3?e{pd9-?^E?iVPi zI-N}5*I%hBv;1xw1KwEMfRPwL{U00_gbzWT2&4c9tcE6g@PQL*zffZ}MbXFvoYOSD zArLLiOz!#7hbYL;$>qhtrulL?plw1PJ=dm9XM@+BW#_kou708j7D{>&090{bjQy2k z;DIClO4i{8FO=Wu0ggLNt0>wguU7{j>cyI430{@Dvy$&j>J+#@{J(v0hsJF%kFQ-Whp|U8Q#`RIt4e6o@QCmnZNNQ&G2!T9xt$()~Cw z+z`cnP6Pn5+HR9~qCk%5<0y*06{&iY#&pC=bh}#TlPZhPwV`^_}_X%HlA4_2C{r!d7Uo zzBd5Q0pl$x^qTtD9YQT=@yA7P5~)WT;vK)iH|hjLvcd~2tQRI>ghf0RB%qr5%jSFQ(Wm9ThBt3A^M|5Mao7rwu9LI^gt5=(b z2N%!Mi1xA>FeG@Kh#TiMw8BEC-(~^~6+{rbob$vflh;B9^WqTLEu;4>2k$3TBUJ_L z`n%JHEwa_SFC#wnV)Ae$J>ClTQSFt6ynGcQ;D-*TRd1c;N%wC_1$+;%kX{rTkhn*S z;!h;Q(_Dv_ksfltT{t^~BN|z1q~-eDzl1xS+qW`-R~_u09$IIAw~b9N9!?5?pfF;> zmjy|9Y97-7S)k`HcgHT<`QCaG+wSWt=qs$Iq%e==jqZUt}Os}}rM9o;*~+lLa}jg_h8Ft>%^RbgmdPIzI=h~G zIR8xmvN$XYLj-P&d{HQ~d>)UP-Q@`5Ix(q^C9u;3lAnNlY*?uGgt0A3`+6DQ3GJo31x_W)rfx?NNs4yFN zE+CVB4~IC7DDxiGK%f;fk4Cl`xG|oY;;0uYHnPY}rES5i+?^KL+{5ZoKMloZy!|f% zo5Dsr2G(g zdg9uL55$4S%w+~^pXSJ%w#9^-(l{4yxc>s^Sit%T3c+~-4v>-oJO4Y3zL@C6!t%#( z+=9>U6UwWa*kCTn{~8+c7c73;k+T8R3O$w0Ap4k=hDGhwkWJ1iYC1r;&lEri1dtFy z`83o-w2gRvWbgHz;C6Y4!^R9>zeh3Wn zfO^VT*?gmsxn@l2-yQxwX@jO`_qE)oI0D`4BMP97Z<2H2(E*D~PJSBOGh4#oo{I=7 zT8%xoP@kVNTRz64@{j-Iy4%D514L2AtM%wSUF?$|!#G`@E6hZT0KsMS$Sec8F;qmS zgJpp-?o*I)XGS$k&Tup|i0PfUQi3%Gp^`)v!>8JEfO_IDf&;;8pP@fq9=#uU`}(zb zfkvUPGMIf8^Q;RDmm9}NiX{Ar{=hW1Z9eK_hsH{AG2$kwl0?6HREC>&wK+f1oDFWC zzhC_GD8Db&D&yx$-U2k7bVCC&TD*ItJgfrpak%!Wf0{goO7 zPv)Nz7`tX>UsJ7mpTFjt7jW~5V||IEt0yO7k##a(ekkdEOWd7^sB9W zzWs>f=*hlcRB~Z}VO>l7e+|RN&bPJMx|bWutKY>L^lxEVe)qm40{S>kQ zkZ%}Nr+tdDx?yS(wJd0r=djt0N_p6yNj^}twF}9xs7(Eu?6XT^5O61UuWOGFBux?z z;F?HR^76{joFrg55I+IkIpX^26-;D5?GvepIl%N515_b9D8EQ+hQ4DqROGyQEFE#w zuj)PNAt438?x8ywT16CNVEOP36G?J~?!swb76hEznJyd@yz#{W91dQTH`C-!x#+KsqS@*bwimhviJKl?4(ivFv2N5|HZ2v?b!goro~ zO5+`dFn8FUWQ*VLxzAe4)4Wa4@|{`VIe&XKiQuVGt`O&_s<`R7{XXE z@2gmdo3gN5Kebuq``wAGHQ7~r;q8awQ0|Fdlu@WuZ9GK5$KV6%$4?uEd|M{2^*2~i z{-Z4K>zIZzZH`RwAJ_dD!oqm#N&Tf~7pRwfI*s`mXbaWJy1ANoUlnuHVrXC2V+1z& z%+K4HN|*yStI|ictJTwu;d-}OmA2{iwyx!HBB|M+Z#%a4so;bZ(jQ4CRfJ^P^AA|( z0$i&9)uHVLenR=V6_R+7O22cNNW3#QMe7U@o;FeQKRU9q z%bGb3VwEJ$H~~YH65TY2WA<)|btFxqF&q&AUElGG?DiKb4sQmDPC365LZEwK3!dJP zb(vA7sN1r8VL{sX4iVN%MjGL(nWPc4VNNa7eqEQSd``-i7W^}Zpd`QQ zDp%h?LTZKOu&=yVz0eyt@BFx8^ZlL*qMhAUO&uOB7O$zN~$WUc_Z9M@=oYN z+bXYz)x@W)vfa}vdu>drU=jixGG&q5#Y9-v;x&2%GCnxY6@Gk^c6*Vr@>+aYNE~fs zZ>r5Pd_DhO-Eh$ez9f%xS1JFJ)NBWLBDDL{A_M`uy}%?eIE5LVcvg;ibDc8Xrwpz`d9D;2 z;N%@C!7>_BAc*;h!~MHmu;lXOmtA%3?GG!1uV}&%+j=v);F20QHe!ic$AQAx!T}c2 z2k&TyWLpK_)qJ(e#*~gjZWeyEp={^LX9wiZxgB;$Ou%l15Pms|*g?nVH@h0I)P|){ zg(Jd@0qzM|-K@z;syL6buVN2kZ<{zU`MiohxQLY_!DnJwwjq~7VkuWbB-{6|aHliT zYpAJ;O}IJBI}jw1Eh0mp8=JK~z#S~p%dpcJ`YeysF5kI%;IT=H``OZnB@+u%tE`BD zIfPZka?2XgUGCuh-v&#;(YVRhKvjD;QH-tHPMmuPl|SXFVG|Ta(-4p5MGw<#~vYSfgcp+gbQGQKM>KA*`nA=)b}iy zKMx96D**s85k^;J3&bp0!r>N-Mk*6{PLW%u^!T{=S#?Sq!VisIGQk`At-;sGL6i|V zK$L9+em@-CICnK1HLwonND&Mth=i`EeD=a^BcF2cn;aiI&?t0PAOo4GO*CvF2i9xd zDSZ*%JL@33ri{D~y4lurMa}umoe)7@9CDj?QtgrSGG=UKt<$j~Ll(^zf`wv$p$B%> zxlavg30FIx!PiXq7;Ff?^FzC0R)mFCa5k1#y1}R&nOL^HayU4C(i3U>Y9-)Rylt;a zq2ddm#t)NhA140CeQ(S}pnBV~ETRR)3%1LcP;rwPyJ zj@o@XIZBra>n;@(NdZQKq=L^=u^>8boFi@mYn6TpHE~w?G904-1UEt1kW6LX*JI>w zUz`DKP-qZxq82+-%yLJa;IZ1)9Rnm}1Z7?^4tzU#wA3+P+D~ge3lFh6IIqzR4LvE4 zE#|~IS4od+__NbgYgyqSvmHwDT;VyIryaVeF_kW3&Exz;5n$tk{9muLA_NG)3BrFy z|CA_>G#{E)icSn3B5Ydbg+?%(wh(QlBt}^-QymuQ560J1zE|F9M5xOlzpX+sZy?I{ zI=24uwlC{A`&vwNv`STx=5}!N=D5RN2y73ua?J+8!UFQ=i;#g|aH+*&+v+0c6=?RV z9K{;BsqzHfb;xx7GC@(b5UVS)=-c#VE_$n3eY@V9>qPM%-?uJN#lR3OE<(^(x&e*q zJ~0_$-+rB2u(!Dqak$GYA2|PIH}V#BTa3 zJAMV$*$o5{5}x4`IAxkiXT;n-p&djN?Ovb9rNYj6C(8ppc;R&eqLgIic0XjBZ( z3aNwwfepy|)PAzTIu?D!2Uqsmn$84398pbwqoVawGsIGd?61Woc9Qoj)sB4eT{AdV zP06x2L3Y7ao<99AOQ2bV*tq!AQd$oHG#vk;TC7kC3RZUWScxZ(y3%@v>r5nw)b8>* zKIQn`l;25#?iP2@CYqPOyfUb%PHBdIo6xAbH3Pb(HMErAi7+M{d%o-Ful4_KLK!R; zXt;l8>f6pvn3`CYImBf8LJkHP8AKPtf&cdcSgLA^Y<{+%glBzE7B!vL?7Fb!k#`fX zHRj2#{LAbEMpD{ONJt`{*zo<{Xn^p6p)!fluTFUKhA1C}x67w3!OyZ)b|7dm?FRj2 zK;A!$P`s~BaL51`!6KNXvKEeW_qA8qo=@D4C6(x)p(gC(7762@WG1Zln{D?SzCQ*o zJyo>=pT$WZbXk9=tl#yj&`|F>%!mTVb^A?B3+r>=4ICc));=toq3IVrsS7ScBeb(o zVRp6zWNF7b0Fbkrf?qy>Gzb=o8G>j3%A!_#vm$g92#t6) z6#xLa+yC-(&EI^pUoMm0Dm;zg_)DOH68KV$Q|dtE@H)khZ_HZUVyzz*kpRQtu&a{! zX7SpwpY^0PCK!;+PYu&2C+@>;jB8pPMl%hM=D8vW}6Js zAyWlxNZ|>WHpjm7HV#(+Vx$en+i~^lZ}H}BO5&%ASi7<1#o|m0j}`Cy)jXWPF&|27 zD&4nL_#96j&3WBGbV?w|fvr_|)GIkK9KkNw9oN2%YY;|x0WR?b`OppoRV6;rwFS-- z2Kl`Qnww&>>B<>6boXK@ENvLf-2!+frIhcq)8mX;JKp^3<^AEF;_$*T%*z^w`3>=V zKFTywPEZJhhw*6_`q1nd!2#1a!0EdkEW)Nh%xI2K#GjIOt*oU-kq@2)pajg4iW?)jIxt6Ualr0CQ9Inz3rBEL7F!04aS@D^I)s@U**LyI{^ z6KT$s*yi68HcsV&p`bpQ|5c5{{l?u3DM=`e6T~7+XFQGZnp>A{3E&XADw$Y&NmQNg6wH6gsj`ckOp>!oh*kmVapdWrjo|^f)8gPpTp(=xJn|{<66x zfQ+!${eLu_gPp2OLs?M=Ts13gKSUb(_$kd|@O%Peus`kojKU=l06>dK@ReR;yk9om-rXt=S5w*hb?8)cCkCn9f zTPchBlES(G0BJ zRxT+$W}-4`=qh8VG|ku(kmmz-KS)x#w)w*{8Z=T{>Ubz%cM*L<6d(L+1AYh;4@QytVnyKvypgaF-5-v`Vc}e#CPOI_Dha`%7e?&k`h+ z*IR3j+@bbQyqhU^NoVq8z)EQ7Y4mEmcCHt*v1p1o)j9)M4PlV(3I_wvnaG0vq=QM8 z6BoZe#62a|L~XWMvG54PZ3F~Deqk4+hQDY%{yNinn3DRBb3_BZfJ@7yr^gbOHw)io z7kWC-IeVP!u`VE++2Z2_HVF7Qz#9N`jdGZYj;&+m@(Q!T_UCnvGAVYVmsQ&I*F=R? zG@Acn^NO|VWR^7+@*4f&vKQ?IktS-zB}E&=3@J&fP;3a*$V=X{w|%j@&BW`{Yu{ge zeN+YmCqiPzkX~(u&>9Sc-gY8^4HwPjTSg~aG^YR-bafgg02qr6brbt^?DY`85ommr85ZpL-3p)OEubtwPm0K_L#Uhqr#G`Ui zq`(FBoGo{N1OgZUt=F~Z0g2l+H$77mWrp!@z;rc!Z0&fD1EXP{Ee5(d`r^ExR=$RM zWH;Y5^HyyO718$?S^Vs>+CKuh!$v~OUTaU^Tdz(lsY#$j=T-5f&%Xlb-7cCdt99&O zb;byk>IHFGh>llSR0_ettLXp`#UTP9mVI#kx7&aS$*wF$aN5TH9yAs0g3e@vHeb$- z_W2i<^N+C^Y$yk{1fw1NxvY&q;GOS%pvKdxTgUhQ5TCLu=@(QU;x+;R(%Tt(mHexJ zi!TH6e#+7U84y*A#i#+}Y2_wPVm|+C zWmeS`9Pmau#&52#B|H@m73QkwKs<0xvK5og?;)DPMu_4BcL~0lB3oQ>b=KqEt)T#2 zvu0krDYaS%BYYs}H9=LsSza$%4)W$ohNlJST*LA5T4LHQjf~8^)tw-c*>`cvpDD!jc0EQOcDGazEF8q4qiW3IJ1l%iN-hJhMaM z?x9gfnf2;-EXvYsl7JN~sPMdx14O!>xz>z(edP$g7*kHaD9Gt5GmocH^|#cvvVlWp zHyrRh^Yj{2k2tY^-Lm=U;za&kAY7V!3THgzG|CS5w7wy>r}fk_UkvnY<9SE9ie8$YUrNr18@;em1 z3ek96P{4W0SZ8L*T*rxK*2xFpXBXrl7GwVxUMyQ77a8b?Y@nW-mz9g$w?Mhf+Y8)g`K-p?sAuQRVwtA?K8Kca35v5&0;02GU}Lf6T#A5VPC zdDpMRC^5a%U&fTEn9tW-#LOg?iOf;D# zB=lO~iR7q>foFT_;iK!3r_K)~RACvZ3|SD31XOwC1P%~G)%U~-i(TKu1rGFaZ*js@$P&!=Uvrz(fW6>jGu_H@q56K z(!C%Wu1kuGGnDOalOBL2Yb1ie>*+XDP~qn z{`EFzM*7(=`#cEGJ*?VWw<~W2Tf!Z~S19Q58@id{hA@IW?`fk0ESMmSol0=oF57pL zAhf5pkZX1U9O4-Oq73}iahCRe5d4kD^7$=Df)bDGu7cq=emHn4EhFfv7uTX0^UiJb zBhT9kTA%l_wxkr|Tmk@%5zV}tXh*@Wpz)T_lXmDn+hb}iS8xa4?;!){nq&2p9f!N7 zqOqGso_p>}uMKu5Rf8STxm_m`)_wa%*I<35J^6fqOrI5r!pc5)u_#4w)eDCla0xS9g(6h<@vg%IBnv2!#c*K?(qQ&S=v1G^8j`jYRG&W|izq}`n^OuD8bJid# z#*o+zssw%f_IljfAAdd*Hky?SweOfSir{<2zng3(OSv`b3khe)J_I#l?VL)q-KntW zyi#cdAzeBel+&1J==X}NHdFP$vd^#5e}75b{K!e~GnnSdz(T0ZANeMiesXygU90G` zqnL4s+mZ_#a$*czi_9@s;-mqHvF_1Lpn!GN#ae$udTInRhIcPXJ97ycN$XR9(zPaQ?-Oj?7 zA^s(mrE4;ng}8wgae`DmNeaS6s4g8strE&$$PhTmIgP;P^6;! zT}q;7(@W!Oaf#4p`e@YSc= z8bil%|D8RlAnfKGduy5=Fv9Qp3WE9;he$6ZAMkMz&33^=9iU(}qIC65@2sjGYsnZy zZR~;5_PN9UKOo!m=_31etEl0y_00&8SoREafIa{vEDpT_g0Vj0Z9*iS1f!{>6+iC+ zPqBj7ke*3)_o>%lB#}Vb1-W;**`Gz{u=a+t^9wV71gl32&G9Jx!1lkyPKXNib3WG{ z5PI9i1`3}N+45^l)Ct|Np0Rs~?^8HU!-4FdN8h|$QT}AX0fq=QTWz@rg@~14XkXGS zNy1M6awPBxKweWya4i46AYG=%)iy@8bR15~8gW&)h)(kaviHC@Y%TV!{q1%scalU> zS?lWRC@M3ZH05M*uTN85EM#clMW>fqen#9U6M7~?wDILy_%kSwV^{ivsu3Q~n&(xy za8;-GTa*JboiXo$dmV)rE=K^VD*}WYZZhpmj~;M%QUHL2?+VpB90cSmDsU?P=%r0| zpMU$np6;1q@Eey*z))jeXryg<211we-aU`{#b!9a(aMxl^c-q>*x$E-3mh9RcV5{s z2G^Zt)EmyzFON6$u4`E(-`=lDF?6^{MSGoML(z5R_o9mGl5J;tg=^QIIyPGoi%LKk z8tkn!eQh#8*UznH$%JHiXTOc1WCk0p6`h}hncS~=Yy4|)AM}oYcTv4&23*if0Xoun z4-iw+#|N}>v(ucpcRkr-Sn@80mXYLh;#^MC*^v#*LxR4A)zZ2>4x8hq($u3o#On>D zuVP6Me1--iJIEb-^3q(Ea9{wcL;OiKdgx4rp7UY(=a=5C?r`Aq*th3B%;Wcfp%dtd zCIk$yBprlsoW9*QE_x!{*b9gM5M9VEL!Fz9;mln%gauk4n?;z5{PG2&HL?H{DJ4x3 z0On{yhI)s9u28mPi3>VnTYLwu(S4B6A7?_iAUb7qu9H!&a>r}feTvtg?LVC}T8Qk+ z&`fp-2F|%Q0mvqAFg#)54Wn%x0nat-0b5K+CmpKg2vEl~2eOqhcrM3ZT&MtqX{*&rS-9TJmgC9v=X1I;llS;C!&X@&k%d&-<~Nuyq{;r;f%nK9Q2Yyz&~mBt+dhri z#f(V+Qmdhl@KNr?nW!V z3>yjpa3IJUPJ?BZlVT)lS0aQP3_;Kzt@)N78p%7hOGM#NBgqKt^@5o&qWNdR(#3&eP|nkE@HFcD3A~l$0aK$FsZDN z)CmLv$tUM(b@I1k-o%<-S$a$f%Lqj+`3T`%e>&XH)YXpHjK)bVA?|(qHy4r8hoIXB zQQ>_~c50AoVCaG$tkw&j^cPw&49+v2KB7Fw>4ux^aQQ9d#N0GQ^aEyoxd*82YJKe^ zr3Z#)I@&7}Rf9wW8u90CfKK1@p=NT&FAMPlmL#InEGXsBgCg46#jkuue*Z%cR5LoL znZ(tnE??j=-zs>`?VWHS2(wR!P7Z!m?B~S#Gy_pDECBF7y5G{7I`pu=yZ~=DW^2-|_0B$&hA~t{Nz)ANL(-8Eydfq4tg(r(j*sSz#DZbwtbBkI znBa>uP`;mIN=Kl{m#5Li&ou#Gtq_r$-G97r$bel6YRYxNlAx9MH^`WkGn0b)V zx!%T^2IH_+`%gL(>(4%om*si*p;UasQd79X>9G5da$loY$+CGvHOM||SRAkM)s^Pz z_MuJmH@+2}H+8NBS=o`_xO1kH9aV7Qr%DLivS8SHpoYxk@RQd+Jo~!+s^p&v+gN-e znqL&mf4?2+|9r{w`68<&=FdPPe~3aKcj}TH(_5OVs0RZI=F80>kM4q-lAKudAorgy%(Gh)gTN4$smh=u>zoF zEAl%-2Yw6&yWcFbuorIX-8Ly#G0?862EWPe7{!4Nk&~Q;Ei#-c)G-8BczV1TOU^p+ zfqXpCeDWxSLMH4+*320Z#wWw?SJgZ5GI?Cq#+B#;jRh(M{=j*6xL5IVqY z+56M$>_qaSyI$e-tKk428rb9F!HQRZz~9D$;*rr7_T;o3&@y27;_#I9qermysn)kJ ziQmo)M8QVV!kfU4F3}tB*Mikq+O<^WtKy;5-Ud~LM1Y5e0jfk-N#T3fb!EPCkl*6-!Q;1iuKD~A~!a4q3wgXK)rN}b0UQ$dPFHq<#br@Dz-rs>&2cX(`AK0N`9Wl&_LYiVUPD3vDq7T$e@IvhGw9 zOnp$=YFf)@_^(n~16;GO~jr2?O)Tv^g7 z&A|Ii9UfT9&?D1V41-V%Xe41FZsXLlwM~Yn$aJJ`XD!Bwe2@4>NA}!DeGa0@Ac}Q= zoTe>f23qK%oB%+LOI7J0Uax(0ZslhymOD302%`|IWW1540-gZKSWD9&Il2DN<8Vrb zgULgwT{^a+|9&V_tCF7gwoBdo_b(&vpc3_X|?)xGx&h4>xD%!BreKlG0>;3EhyZfH2d#|_TX%6GQ+BG+{QZfDz5M*H#8FoimeGX%pGbHpH&dkA4mteqTjXO#TtrxtT!siHZHbYDbESK{f+#si@;U=bD9xud6Wu8qUx0 zoray?D~P~z-;51v3E$}&nW9oG+?kX_+hlr=?3u{6V&$IU2cK3W+?&ugkQ zDh?G$y=C>$GKr>POA)#%i#F*eOEG&Gy%P=v6}&WHhIinGnaL?RL&SkR5A>r;Se#!4rz6AQkJQDDPJQa!}X_nNmBH z!n8go`-gRN8PJJ&j1Qj?Jx-PK>0Z~jKK#XEX4zXu&Gpp@f#ah>) z%C-dhlNk)KE-(N92)V--++l&(G~nx1N)UMAUFBd-0h|X^VFLMXKXHA@Q2_@7<*0VU zse(Da?}fHO${KP>x_nG0+0!`h4q;-(Lgg{Hf8?Ih$Ld;i)GwwfX_TDXBg^Gp|Ln`R z1>QO^fk~0ftGde9}VW~MS7J{;&(A?5g}J{6K`I^y5_!) zCtl^X9Eb|^4B29t8NqRtBchgV!59$i&}?*lEJ@1n{xNmH0mBNgdp*iWGlZaSJb;0w zH=m3MLQoZ50|*g->iUp%HN?SNRs9VzKj6;S+tY8D{5xY#(H{H*Z_Au}gLx7cvwlf5l6#a*gwzxm*LZkuWQ7a`e!zi# z5njd=r+ZFxGUax(vYY-7cVHK2Tv2~hD`J>Hd)Il4F6cYj&X6~d51O4u5C;;HzNZ@_ zv9(P9RlTj{UYOBusD7MNQ#Rv;|B8K_egJzxz8S+qyafc`FTml4NU9T$m1HnQu1X$y zy~nU!p0jPpZn{N#yErv5ICG5iL`Mbg{m@fu#}s{UrlRADnh=45J6x(t{~hpoY@!m@ zoaa(1&%;6TB3-P5^At6`Fy?X)6^_cIXz+s@BkN8t-NxfyF6;69XJ3^Qsds6&L1)mr z9AjaY$g1xURox+8#D!t}TOr8?FqYJNpDJ1MzuA3BOxX%X{5zU4z|*$Xq@k;b$c*AO zcMLI#Ks+Mg$jVrzp4U4+?RrnSZR4@%X${^;$MDmCE6w^gf$2Lm@a^u?uI(cY1eLHo zKBYCfl{8B3+S}lm8~8{=(k{M#xxaQ#WbZdW-EQmkhiPAb@=w49($jLQZEbzcXN} z-^AAWb)4sz0YK?9g~YxmJDB3GXX|F*{MIfU)|^&lQ~n#u(m>|Ys2g@Y-;!tmQQn`(ds&`J)FB&zc10e=T!nR8olMjSw69l;=c)LO^KsuK zcipMuhn>=x8jhC@s{iI;7V>xL{C_V13E@haEjlX04^|q@k(|(YxFqo|S_ZAVm-<55 z`qCR7HeeczBYQ8HVB)DxA!+mPFgI}?thS1e}215bOF4`%iDt3@sX^q>I2&=ltFrGpYrS^W!u5f z$mMKe&6CE{(G?DGh|Z4%PZD*5Au?)Mpe`kS_CUyp!fBJ{!Yh52k+mTfe=#YsWsp=V zxND3P%z;Q@NVapnx!i@?=z{a@)zEH8UIN3joC>pZ-KJ%-Uo4H?1|UFI9ndJL` zcIONmzHz3G;Q#@GFl2y=QV9krp;I|5Gqj_fVE9QQc_n?lqxYWT9d z{?{B_!G|8vg{p^4FH1E&&#m4w;j5&!v5K|CxI7evXOPFv?wm$5v z%8l~)Ym#kbWB+`6vDxn@+tI!sHnuM~);|WI#gi2Erh@&Q@H)-6p>thulJGdYehj>c z+ubgE`Go#o$famAg4_7p^J5^J9c zM+O}{eR|LID~s$s!23}~5EGmBsq;<(*y6u$Q3FACzPJHhw_m>eEi*q|F@I+=6}=b| z3W&z+p1QbRD%T!!ya1uP$QDZd!OB-U@k7e0vaWbTb61K46d)nkJ+J2(wdLrESHyoL9tJ;v3Rw~; zLa6#+3P1bnS}g*9AT|^yI2t&H4ZFw%2@Pm2pvO>KD1Fl3^$XM`yT!tnd?=Q;~s z@yC_@>tF+C|G?`lPqu)+O>`|BFqB*0I(jQt&v2R1uJwU&f7mj+&8dJWmC8n)0DkV* zL@g^Bf?pzd{2dxEk-5k|;*t^zQjz=Z1-(_FC=wOZi$hXu->v9ZNl-5RM5FSmtXqFO zdZ(uBSj3-1D&)$|BnNX45m9?#c;`XG!^_0d%sg3*007+w!^W+|+rxKTH0i#d%!VzDIfCkax&5R$hA=K7D)#X?q3b^O1@;C>o@!|DRq*W#_# zYx+9+1;CmYDUHJo4_j14jSQBkc4GLMVMI!T5y_)YFtUZ~NP({Uaoi{|H*KjDfc8nx$)4hT~@o%8R_`g(j}r_Ju6m>RZ1J$46lfwR(+vtz9OhdYPZ5 zRtN1o+zoX_V+ier#(*co!GX#@5CJTM;q>izrp6UVShOJs8ORkc{WC(J6t9u-rP)Gk zEYtN=f}vZRPz{{Qz+n95QnIaXEN8`7s${Qc?eDTBZkCB8k^(@CEQ{cvXjxBvj9_3@ z2dfT=t$nLj3dp`aXk5bsAoVanf)e8KTMNObyiu1s8#@?t$0EyiB+I>_TxxUVS4lf| zj}~R!w9U;^uoVOPOX{sSsaw6-RFmfng~a>w`_X|*gR%8DryKfF9$SB?92ZfLf#7Uq z1UaFGkI<|^C_;-l&--SH^Yce_esM|IPh~)V$I+!2*@SkG2=c9es-*05y&S>k=u;ty zffb1ljE7DJ-qmAyP8)W&{jLkowzW?-kS0n3$`On8gX>fR3J`qTKLwy`-6Bc+?><@E zL*|5Ue^Shv^^v~svnfC^2g35lMl#gJgtYWZ`V;|B6}<^93__`d2Go#jnlk-(`$aOh zXkB?Pwp@c|0^VKcJ7Q=9n}%0mNKt-ZPAYNjbYcITt}-i%ucTbzi)ZCmP#!w~W9)j0 z+oJFMN|3|>EYnLb!(l>pYNi3BUp^1HTu3u$Yd}Yd6pu&=WBwD!Xkv$t734ra?@M~{ zycUkAHYO6vLrt4NnC!tZaB?be+`;ZUHCU}6VeO1*3gB*B{du(3Tatr7HaiQ|rklpD zy6pa<-EO)Wa!@7u5R5u1=KQDDckM`EJtQzI%V;#KDTR_FqQ$!WX!VVKf!Pe)sz*S-K{n{6&r9?sz^U~JFV9>0RKSOKK720n$mO4Sq^o+@=sZ9 zy}d3sHsH=q3EY5F_yGrrLrcW#T;j8m<}3gZ?KMz4;C;RPyy!ZF*?JDZCnR`EOc-u? zFnP%Fi>T`@e_k{%6D1%FBo;-@ZUQcWK-pk3S@2VbR|*KqICM#bzUAkmen8+n0zRYI z;mnuh(BG{#mNIayes?{AF#P`WHL-e>=1?E<_k0<{**evg-?(8cDAk^NNMi;Ygt(ht zEcpZ8^Mzi=71kBEO%?bCjGh270BIh6_f)nCx_<`-e#u)aHK5oOIF3%WNS`s|^EK(v z?q6isH?C3H8d`gu7<4`}3fMKf5=Fh9qmCX*8eOQ+Ti&e47tt|1&50UBA-@qG3Hwm5 zCZe@1(8!{G6>ul`+7Alcni+2&JzeJqrp_#r(DD8mn~?vmwLaDLR5l8fb`Q_rL&#Cf z(?3$*$NizcC<-g@0U%(T8=%QM9$zlWXPoqkUI>{C$}8Lw9{y~?b8__Yl_&;pzJ^28g8YTF)2nXZxekaqe!ivk3Ov1om0vN z5+xWjXS=C+jp1|BHTs;+TqktKRK~-|R_xzrgYWuZc!%!a?=v2)CG5^Fm@kGujZw@O zUJDzkf|e}*@G{^W$*dJ_5aB5~{?2RocfPe07fvlUBo`+*%Xj_<;dTMm?&#IZfERiC zQ^`9ybG#~8uMx4v0J-z%%(wI=R%P3I#ntIRLpSRj(dy>{hEdKlr#E4S@sdHc=Chy25_n2WqxwglhuT z*y-EHyU$AWz=lyVMJtfO2gL5Ef72OP8StVui7w=lOHgrIuC$rataQquAxK_{M+FI@ z0)-uFt55hsA5Rl6TF^G1QY|o;J3a*Jk*u7uI_4PG7CIKF0O@;679|f|CcB2 zOBLYy2kY1PwjFsYeU$B7)j1pmW|DO*y$9Zrb?;e_8@4_MeXQ-9(-B+i^(C|I3{ToS zmkFts>kF5UMSP&OaGtWA60O&v|6Eu0@FqT?P9)7{Pd_N-N@SLQJ@M~3Px=l(aXa{V z0SLY};hDc1+$bFIg9tUh({n6-?TgN%_mVZco;isOX{9Q4S7N}(Q&U*YMWi(a2r4)o z4p5MwVRNhV=molbZ3-p6ob@`bQh2*gom75u^5gMgE(){56 zmAC(^M|Z?YhY>H=mE~z25_=-GeL42J5?^dlGs?#5of_3fQ;0wr${jPG7DeKJtpbQK zN8wX9u7h|ZgJ9^9Pqpg>E&H1=2^@+86()okke(sOvecID9idcl$`XC=(!b<9OV zbS9x8^v`s8+}}#E?6c^r=j1zxoYa&UEBIJPyKI zQE%jPsfkYy_PWkU?u)k6uj*v<-5vC4N&loZi>$?niK6#A(wSAjF14HrzKX2Bd_#WK z%TFqTdZ4g}WK;_ErPXG*7j=nqkb+Ka|GHzr#OHgcC z9HdO|fQDGIk?+a)D4_$da@HCXJd3(?%v5I}%lu|D3uB)@^9Fh4XAI@y%Sb28^WOh` z70UDw>yAfB>CXuH@j(Eo4=?aHaqhRRtrXZOi# zv%j*|1@m~ITIvfwMdv`L3M`{SRfX(p+gBp>UHZRZTJCUyY{J!@@Si1?DdV~^K$o)U zjR+EOveRnd-oXp_lK#XW7E3*)Z{(p4p%hw@H~j>jQ5Z%yDZ{4?PP+kW_}KIZ=)D~?#x&lh-Pcj&{ z3zBF^6uL5h^kS)4eAOMUf(oce0H~F+0%IcBFa2xtVjtoNEQKH8a|B-Q8aQTjP3Ig) zQ0K(p{_oK*-h#6e7w^4-939j<%`%RrY3R@bGBxb>Mm!CPI2V- zRTR;XUNi@ezQLW`qGC&lkxjNN)n|6u+%}yrD52N2BD~Y0SF^!T^)&oy--*tBA(e)t z&Yd70=VQ(Z)r#T>a*8rmVs9#JBnfs1T`hYZ!gvKO&5^G-4T+pUDeHHU1ETvjc)Q`2 zqc67gt#%R=oBu8{e18b#$I+CjAyGKfsTQ=j_uwn4HXWLVJ6>Xc$&j){@4Yhn@c3N4 z!xVOhr_io;QH5RkZqPj`rpDFO49f|9<}cD;DYEQB#PD_#XC$8tJ=YWZ*T3WZwrt!$ z-O1(XYgLdxH;KvgKQhjD1R%Xr-qoDsdID8pm`oRqO*5C`HTy21qy6YhEgGBWZ`&n4 z*;*X_V(fKxXUM&it1pB97NtZbPx00#Dq<-`anf*>;BcKeqT>=cr5tSjL^gAGk&`)xvr>@~URBi4pF2s{z{++ZznYaOn{^c-8^?Cr?;dlVr~iTx z6HX`2aG%zw7Gg*;Q-aex)~wGalZW8Rfw&2?I}|rh@XoJiJ*#^{;8C+4O6$@+bYN8Q@Q7+y*AQj=8b8GTC9Dq59%m!kkzwb zcgoF4(qiRQih`rAkp{|VdhLG{w}EYf8NRz4?XLSenlWdf1$MxJCAMM#47AlGk*Oti zzyp1+`vwvpdU7+q)h$GOT^-quof>V0Y6Y(>hqBxwQ{4)@l>-#?2N~{?pUWQF+`y#| zA>?^tq@!z`V=`@g!QmifX|c!=ta7D8;`X@I3}P}rF%*DK2l9)xEA=!i6@Z$Sn`!6_ z@XmRn1KGjz5*kSh+js?PH@8bf$#JJLoEHHl3i<=#BB_m107RtL9N73?Ac8GGAydHu z0ygF7Yb?2{*UnXwu&IEnc;UgW$#3#0?orm|W;Y>}Tq1rC45YA|Qw)v9>*8qgOVl{Nb- z+7Bm=FN$0S&C?S&B($9kZ{X#GE2eE?=&bobara!5?c(xRzX{;AX?jiCW87`u(zM2) zLLWm}ym&jS@gsel#Oi}1w!z#0r(M;z2;kxdV-q3IU)tLv( zqY?p(%>RKFtk`MMHfDU^qy*#UBFCpV&^ga1;Q?dYfK)q`&!8jM!6l^Qj}tBM5xyNo zpNJ{C^m@ro8JhE5jlIfCiF-4x?pLsbYz=k&2lzK&gKeBB6V-H zFbwZWWR0bm<2Nz&($HTN1f;s8bUt-9xmC!#sesD0$;kCL18#1hi!MQVLlL_Ma8_x4 zUw1hja74u>?M;aQVDVEG_XM_3Qp&5ji~0M%`#CM(yMDTcgkq6^NDz+w6!q1JnC=od zXw6P@tym3Uw&nvLYrgrRS&!LX)}O;*_{SLlHn@N3znX&h3{7b(j_-vII3}2>HhzkT z0A1?=rLZsQQ$Beup@a82LHWqM;k$?BxallW;Qbu!KvQ`Cq{riT*RAIL1wCrG226sa zl{b&%yrL_5OlW#kb5J^bn%qB%(HjHpBz^7ZZ*Z$DH3jE#cI}7kzZI;j;@b~Y;elbe zSXf(GUyx?)d--hpLNch>7h%@FtuF05C<{bDC{hrkjT$N%U4Ue+Uy~V1vKpVN%Z}NN zQx9jMD5$X0`1M3>=xJ+~yn$ZGHPhvi+m`+xlx~}vEfRO)>)pX$p?6;21i$MQ1neA= zlIG9F>W+$n9reO>@#%b53tRLYHcMq5mQk>Mu%p}fa6!3SG&g7JL2Pw78?xaNUW-Hb z-kAvRLD0FBGmoDPlfF9uKu#vaDSX;wQTzKkG6FC{BeWC+P5{8TQ7%*J`0c+L8?NnK z*UpZ&^Uy?!ezjk^k*E}#eh0c}^cd+pqd_E)?{XYn;j!Rnd0Lf$iZvwb6`hkyyZWao){iN@{ku^&cJMoWH)%mXO5CngjBPsevb1n|+-2T#< z3V{$`2~z$Vo<>Kh{YDm^8`$?_hlw`wz4l`~f%b{zEQ1t<|U?Etx|9Ncx_L z!2!{M^}j#|h1W8x+F}nyqQZ7Cn^$aOIP@}HkQ*bKsL@YIjddFq-`#Z72o39;9~Z1& zFYWy_7>S8hhD0z#}ycK1sap*-@{k4NepUus9#rr-oOiBks5_$J?juGVoZ}Z;*68# z;8hA5jrS1%q1$I(qj(}KTqu@i+aFj}$OEukodhAsIRSN@vwbdeFZ*sb>%Kng^c7=A zV61(&UIp<_<(NSpy;_6a*B@UMd=$_Ccm$%P94|Vvg(@=bJFuNq!tU>JwG%6PisO$( z%NOh|P$jF7cMUUN7PeWJYQ0rQbS}8|LE^iWom-rDj)K*53Mo|W-TQ!)2XNZr7>@(`MlWd zq3(5+snN-pE?YfvdBVB!Ls?&FaH=o5Op~@ftxG0LLNr@Ok@azwDuDY+De)Z@p*g_O6ESYbUd9l5GjE zC%HOlNW-dJegD|)Md!=3R8u8S2bNh6B?W7OmNP@E^ECW{FPU&HCX6Ct? ztkn!RM&%$@wJ{Q4d}Zy67-D1MQ8akhKJU(5{u&rWx`RpNEThw6F=^NQs2b>d>&On) z@J3vmSbZBW#~xNFNLW2augRgrchpQ{$j10)FRuD7ZuJ6D z{M1QIGAIJQOPuGRWi~Ts*l=Lq_-EU=mxlvLU*_dJlO#Fu@T30D7gkXx-)oajDJlu_ zZ^*hyC|b-I6kc=9R=WMjafxEq;6Eh$4O)>*yvxKzu_*5DZa@w?LPZNV;a=V>&S;? zsTgHVySgKMBciWdupEa?eMWO53Xl4a*x35>SzTl2_QY|BaBBqVP0)Y6^p)g_@wfIm z1PVWBuC+{i)*pOcotn zX=>Sdd*@a@zAf8Ai_eO#9jRy&O}@E3n4+{=37%#@E((9*WiB2Cm#Pq=){z+RcGw=3 zf2tdCo&@!pRGTXW=9IQDKJl|HlRRlsokWb62%DSq&eSWgaL{HJcbk zqnQ5_0(N!=n6}Cp;2rYaVc@ZNPKHHWH@mt);iE+7iHs1@6zhT+atpLf$A*)g#nOJh zabH4g%PTE;EQ2p)kEuzuR}4E3=(PSb{PUsBqS9PlXS4~5?0_L?rI@8)mcH{tM@emL z$WCP6?26Hy@!u;=IEiwq<4vksm4+T&qienX9kDg!37S2JP7#mDp_h`FFRh0yPhAV9 zokcp3^ul{vz=~h=6m80&-hrHO1a*D3vws@)6_DygrDUk5z@`Nn%n4uey_Ww>+etS2 z5g3>T4E~nS(4wh!uHcQF0RW>5q$4GbY}9@=#_zL;wU?G@aOE!po$0HN>263Yn@cPV zE(6+I`3*zm1r~tI2U&n)5iIy$))^+W$-xpnsJC*MJ_}cN;MsoiXHOvpkj+M35q_QF zUi14oV}CKNy_aVp?B;#GT>>vQaIYJ6qN}0#5ny#kA=LeyTIHBic!n6;AWasM?qham zAcaFQ^zoaARRR@6Q>CRyQy!<3QCeKci<{@4yEquIC>g}t@nU6oJ4b!u8rsupV)moB zTP^zQODeV7INrl{RCZR^>9HYR&nUx>$l!ksz!u7XHh9PJPbF}O z$qu!3|N34832uES8p<2?$Scjhf;`+6BlG~)=4AE4xpE#e5VDOj`~nEtP(2r0Sf?yl z@^GyBbo3boXp)Zn!wRD2&O6MWnyzXCjz?U*pQ+)_7u3Ab*r3zrA;S)}{ShZ0D_bIO zyPa&9Q$e<-n(tz&k`hldhZkw=NsPNKKo9@;NaA4y-os*mQ*?oIXA20G_K{`#5=EzV zs)D;^s(y&q3AXZ%V#b6>$;%MY3fW+S(@LO+OxzsCs}@32No^b8)~xN|b6j2w$A7c# zKr*h%r(zXt&YkHAcT0z-e+q3tjn*~Zt|l04K2>kCO<#E{u_PyGo#K6y`I=|5uaBr! zU;kSn$9ptY+fP;JP-;&(swBD_E(--4bKNplEVc-`aRP+xJmYG%KXDfyDq@nl?; zsmRP43&2{r@O7U{d1M5*RhuJJ#}g5@NRRR^tia0dd+q)2d7HiYvL`xcw~X6gvB`$A z4)+suh{iO{Svn?wkpK7^``^RMubYkqm-iZ&=5!Sr4Dig(+OetsLt z!&v(e{#4f=pFhW?8V>?@F|_FWUIgDzfF&uC^!Uju;OpCSu7y)HMgpyo1Au3;Ks#U? zq8s30A^~c&RIRWC+y2*gZ1iS8L*2AiJpNQ$@{DtA8zGM&!li}wdG75BA+fMO+=C}E zsWJCy7z+Rr2=u)zvLSsMs;Z^Tx8`#EQkYo3zWS4t{iPt1=3AaM0X^^s0u%?}IdA#UCYwzm zp#1=VpedpUz<&>Eb#)MSXoSF>;mY;uLka;H2Tu+PcTdExiap)zu#H zv=#)5psdHXAL`X`5Et`|PnE30c%p2fGA8`rbAfS7l>h<~R9#(NUUz*&?O|mlFs^N9 zoNh~=`V`y7xbBm8MaAGXL7Ka0>=i`_m4Zmtx#YjrbpinH9iVWF06+qRF0`uFi7QFH z9+u%vy6NN8c-Xeh0f1L}lI7y#e~K(gk;a0gd> z;6W%YR~xCL7mGo0Me*k3D1p@1&X|{}m(gu|?0xTglfCky(*Oh7zeM5zcB=DU61T#4 zSj;i^KO!C3{1%LcfA!H=w6bgN1wtu{bc$@=(u*dTN0IS3s0v%oe z5RDh)9gb1E?d~o1#HU|oLxnlk_gqr{R;;#Rh=0RWH8jRWWv@f6744fan%-=NmwR5* zA38vQM-!nBWXS7tu_wjDl2>eS$QI)jEv>uVHvAhce<1-1oGDZ)SE~OGs-R}81M`aW zrzDWY_2A@c`K?z3@^Nw>{V~x9i~|6C9VZar-5~VhzsT8k!ffhQQA2misvUvYZk>Q# z!a^sW^L*Pn&|w4Y&0)y1z7~>;CyKw!nD%zWx=!GPlmGw<0gMX(z6bz#`4u19RFnrm zu2mLLsEP$jjUIqvkmA0P{a-8y0}VgK8+_Lb0K~Yw7^PtPkx{x=i?oRQLiyasyy}%y zwpwmGtkZ^7#?`MPG!&(X>QD#gL-VV}6Ocl=UH~KRCy6A5C}|O59ox6segEzAcA2zI)e2;ZmY)vA96VO(C(9*Y#wuA*AH5D$t#;35deVj6>1qnA0H3-+9d{7 zOI20ceDyMxCtPx&?K`U9HbW+3>7t8q&1zVaBG*cZuJ{l;WHCly7u^4vmu{d@f-pam9C}(Wl@$eECxv1?V#X^M8O`W z^7r2LVf)HgzE8HznH-j#lLg|9i8001NoKu!C}1tR~vbRh0y#;2W*i7NmDw|(_XR=ee9pXCBztFF1y zKlW2e{f?2 zA=%6=%J@_Frt-iGa7Ewy-RsSMd1Dw1Nk11_B97_0zsc5rSgV=4J->8iF=?D2^L41v zj$HA$2nR`3@r9`Ri!SeUO$mi@>m}(!NZX2UxQ4liv-2t%Oy1f zaQ|@*g~VTrcmQT`?nQV2ZvXn1@#fqaU72(6OvpkE4WHx%D0(b7e6hjK{mlXZ!0rqH zNMM%%XqDZ&tUQ~V4Ey+5!m1!NrZ!DwD&W2Q_b#_9E_)iyv>G_9Mh*C?w|)%(K(7D* za$b};&f`ixN0i!#!Ba3w*RwWwA==xc@>Syn(s{Sw6#RpC|FwPjtKTK9Z$A2c9x{vj zM5z}EF?qhe8V>lB2G@mij>Jpxdy#dY<~z5R{nrKn@V_$NLn{CP1TYTep)H4@5?~+z z>ZQ55>E3O2=2I@R?laG^(ut3?5!%Cw_&3VGYM1H)wC4aom>H$>5 zxYhv@b($B&oQW+jpl3qg?wxk))uc=BBIi#&Urh&J%>J_I3aOD)Dj5@H7B`ZqSi@EYT_#tu|MRLAjD} zR;W%N*vI}riq#3-;{GeaBpwB)6m=YyxGy%=+NrO3y>0HEM|VJCOg;#_&EiX?O2Y$8 z0svgtglMO~-0i6y#o*#f=>am&MS0wNElq-mcY1GgkZ>o+dI&dI!DGo|Uz4%-(>L;n zZh|#%#J(M(Cqa+|0$}b|d0SqUHpWvSfKkw9JNf-1DpJvbW|u`tyWdq8ywrAgciT2G z#YszX)6HYE;beJum4UYGTKY83TS{lsml6&T=)h7r8o}1Hd9B^?nSTtH2RB>7D$-*2 zFo4&Bmj}R2lb{&5Mwr8?0)S{yPIIKKp1mLb$qV6j9^OI(sRDs}KZht`?ZY{)I4~ zn&U<>nx;^W0jxmu)?o^<1y^rjz(mZ zv&Sj`I5&cljE!8bsRMww{OzV<|0-_)QDuRZyyxV^03cP^f*k6~*F&ui0JKVQBJu!T zxE}WnQQ{CG1do(308R@8%;IyOXKkmSO*R0+0i|4#n^-x$vLKtC6OG|bdOl5@z^V%^ zF^R%G=ocrca_en;xTLpe+kX9P+wuKxA?Wl$k#Gu47I0Y?G+>#=i4)KYI`*>|4)+3{ z;yNAoFjpE;WV-h~w@Cdn=>d*Vr8v3%M}<;7Ccqd|zH-U=FSL$hPqwxD@bL5k>e_jK zA9IU4s)NNiLOoY^DLP0Cx8OV_T`P4i@dc_@m640!a~PE|pLGB}R^r9k_2ci^rf*T= znfoY;pF&=8ks1IZkOn4tXipkg%h9XhzfBbY9N0+CbpB@|fbyVC3N8a!+JBJ)AYoBv zUMh4QEAUV8{x(u_-~Ogo+3&yg8P*|?#~7*9^6-#|o~;5sjb9p{WLYOkmBu*tem0bR zS0Oe)y&9d!$`vHo1$O+M-~TK7>No$B+Ww2#lAQoLQr+avM*+0~>PGhsTN%=mTd>)s zlja?p-j~2iGXU@v7XYb~4mC#lrwXMh1Q0v`A_2bSIZw!X0R%ot<8`Qd0f-o_)Jo-7 z{OGp(?OAVqj}=xv*6RJst==;q?#4W;bj$((%q1g2)_4FO`maB80?q*!1!2hl+adsP zAB?tyJ}2F;1EsPEOR>CVtKEIgXEBN>`~yI&sm?r}zBV{nWr(#>DBguIAZd3oh!8FS z5cX6O#4Tyu)7(Zg-9OX3+?c~>vj23lnF0XKyz9#dFR8IhYSIy%QH5(BbW$`jQ=Hge| zHr+JeQ(mJSbWSqycy3U zlx_at*jb!=Awue|FMZnT8`nCjQ#CqN6^eq6k`hYp0f?^3*18gpbO7M-aS441ia2K( z0MPzd3MGPJco&&4D)GD7-gw!I?LB|^0xyu|O-gYu5*c<;p=lb0mLJOe2DZ4r>rG%X zKU+@lr41PXKu+d_`$FleY_KZI(eRD}GiLAqz%}-_AN>@TKdEi?Io3970lGR zf06CntwvqMyWx1q2np*lDLt=4$X|gsgzXanqy7rL*Mrh(2>~cp?QH7Mg>5_lpk_c< zU-d3;2J}z?09k)-VKX*AyJxFC{rBEy!$+;AAN*Hsusgb&6Iqo+-(3c8iMCC=61u6eqy`6`AxieKo8YOVaQ5t-Nc?L zxsCBRD6ppMiHoI+s`r4FLrlAFM1Y!sl3#Qhufr`r4>bUo^!cKzURgY018JQzw{9tE zz?ok*j?}5Z`Opw?v&wFYuD08r2ew(;`IlP%NoQF5tl733Lu~}lP8B&kD!Hw5M`L#C z000g^ssA|l07yqR0RSz9kZ%&FcoF~rKxpURC@FdBE>>4xWYWmI_$e z?=12eiTTM*h!DsCfakbGt(4$+PDuq{lm^XjEc_GX)u8b`_XY5|?xC|jU`LVnyXK$1 zgq4c05yKe(AflrjaE>+P?#fyJO~Amf(_k7;I(F@{%5tet zViebZecuE2hgV!??|jFzy*;yxeSKZ~Q;l^zNe-f3r^^2+%Ogp72LK_nqj?(!xE@wY zW6Z;n3xNPwjKb@&LRG zOE&<3+;+(fojgf(<{^M!&5uHgZpZC@n z*yt{OACJVM)g;FK<-^XLOKy9&MCW2VMyN5bs_)-J--AVXOK-mpIk@4zfbCTBmvL{S z4?`Q>*;H0r#IlM!0OAF>2SDCnjeYO{xZLn=n;|XmKwmT2KL>iv{P&Io0O0nHiu!2( zO2_zC3WfLFW6fG`XA)}|&=r(_v4dlFZz1GLy_KP|^}+`@`s7n=I|_Rcpgw|!R8rJq zdI2~4e7V6F3js}-2AD{I6$GpHN}~>dpVC>zjVyo$0PvV&BnCDnRf|#a4dTOIv4V}| z8;^6Tb*$0?j#*_VU3igg;i(nNsFUg-ArvkiC5|hUNOqCONdx1d3Ev6vXH50+=MAKl zaKrq=72S^VU&^_M?^$E_fAbrGNv?%0!KN2Q6*^Q|jC)YJo8n&r2kDi#4ym$IMueGR zGohI*K;4}<8u{3|Gr;4prD|RN3^{^b;P3>Y=|xD?4K7)GQp(=PA+-CHTYVTyzNp&k ziu?C<+e*rl?(6TeoqSGWAoHGg8;A4y$i-NEHi&vZVY&necu!am$%8TwYUTHVA?wEC zDeM`-TA@kGHJ?OSt;GUCa3hq8w16$O_0SAPx$PnWhBY}|?@j)`4%hEl2qr4ftQk_e zA=jWjQ}L$+vVIK;*E4J2vb2e?CCeD$uDSI2Bu*?QaVM?0YdhB46}X|4MGS zJn|3#&42($hVt(iA_VX}0Ki9+2f(e09N-Cn#{KCT5Sl3mpfRr+zn`z&Y0td!y*9Yu zI4jdI&1NlRzsUp8OO?bvhDim?LIWU=!TTPH>md_^;yb9%d{`p{@BBFJ&=Q=Ad9-#O zy!}_ULc zjlI{nh#EVASNB|1<%@Use-Zsv^H4yrfLFZYGAk}xVmsI@LwEs(RPtW@Hs@po5$UQE z&%m-_g#eEA6_eXaDGT6(qyZjh`vU-tN`NU+A8LX7a?Y%VFa+KZh?@>SspO_bCjj8- zcf7hf?F7gSJ1KKGOqC;d|ILCitWGlCu`iY|lrquzwUYg=a{#~*PNNV?h-YizN2^4H zKm=OP=#VX7aChHxmu>mie<9t5{95AI?c~~Oz(+_=D)YTIz>ger6_p9jDYry?@d;{4 zE1U9!w;VWA0N`a`bLX5C0K|2b6pviz6}O5MLJ2}8l#+GY75S&UuVOn0AA`+3_q=CY z&#^0P6FI6C;*p=2x6BoLBGsXp2P8Q2LNM~zbhQyRX)c->^1`ck-B>66Tg@4VNTw{!zP!m zO1f6)jM+&6uEA~h*p-*R$o}M=7g{GL5nZDW$Sz_Lrd^cQP%4@0m&(ljhK1j3?S(rU zB`(>HLJyyX_f(R*Oq#8CFk^oI{QrE#{_L+mZoP|+wY>uKsxhxD9Ds{6)O@do7QXp( z&enPkdE>%IBPyV*gmt#irUwAphPT;;=Ra;g03g;raGpXK8oA=-Q0kpTI*#eKH+bDsiG-%Ah;YY|{kFDj)LZjFPm&|E1?D~s~4b=vz3nl`oue06?e%Fm(?=xb6J|04x#3B~{AR-N~^Qw-k>m%suXLw)~uP zNeL|3-Vvk)t}Z9LfDwXiNuc&&BFfKjhT@~~Ag_&tgu9C63D9%|Z;kVQ;Yzfj_=kitQ7r9Ge1ff{JK09+ z0notR_CTT(A+K2}_zZ;cAMe$AKN$Wp232&%16`yi74X1xkczefg@4!AzG{_U|B}z} zLQu%5K%pVEi`CB}z(h(j0~^yIZ;pR+5B?ee&D(zu)^IEA`ByU^rPDvN};}4rbJ9R+hei zzJh}u*OoUS5dB&Sx(!7i;n0)-K%;t~z^yu|xe=1{089-4XlXY*0EZm_xXcRxAmakE zXOmOjO`;GBBCJz1SOiwR`*z#%xvQx!Kp1V9l+ZR2ElJ%~bEOCX{Df+u9wdtYcOn3g z5B)s!yXWD3#U>K=m~l?e7CcV^0B#8IQ|q^`nhwcm(-iHbn$}4t*$FQqG}}GPb`Apk z(4$0j!i&Ql0I(-l46m=<`L^Y*L8k`*bTlg=pzdIkgcIx^00iQQ&?*Q<_2a!PC?G&C z3>1s?^w{dlUSnHv=Z?aBmCMkj6kicnOq;&y6)+S-)`G^hm8b~P8&L!08SN<_+;2~N zR@rL|S_c)-W^=wd)YJa;*ZsjrV@1@1{;K#dtvt@8*#QV>od z2^S{#)5lsL57EMOSQoFAv~UDO`@4gN(&5W4MywA3f@?{!(lS0HWoD>iTa{YW z#nVo)L1~{H;IbN!9Ye9p!#i1Nle+jn{n_YmypG6U; zHJ|wmUK%n;x|u}Ra9seiUalEiJL|sP8kzubJVaA5v&-bHNC%n8)^CJ&a^`qse@DSg z{6qxJ5i9|ZbE8-bYOF)nO>OV}cJT|&un+#lYdt{&s)hq%6@qcltW!j5Hd%C8fgL^2 zWY%5NkdNa2ClsO38T<_~{yoM`oj z_RZm@f+rv0YP^yMAh@tS_8+qVG5`P}u0Z1zg#aF| z0Kh||jI(=2d3jwe2aDnF8f&48S_@ZoQHE0)TY(dXd6Qauur=L7E4z zrWwaS6=r)B0L*NMPxS4OX0Pqo3bevEd{3xkw;M=NhpM@q8`434de_E5$bmZMwA1W_ z^DeLl=_a`cbU&gjtXKtAUvH-X-m2mIE4RIMsYCy%0{}|vh83kaT@qMv!{uC2tswxh z%-v;?0{~tJT0tu^E-Rzem??e@SQG{=rukT6pg>G;Vrr4qh}%j8cPMR3 zZ~#kA>3)SX&#;wGc%ltJI@ycz-|HL=NP3K^h@$z|gs%T_cYsRGvO0(x7qI*zzX%(V zDrFSESabc?t@4Xsc$yLvSQfnQviA;Mt2TJnmDF1tu9s?AI>h6{XB0@<`+d6w#uaA84zwA%me-%P#Hf(=xfUJ#B zxv_)W4Q+iDd#G(ZOcl0O0fWC%T60f5gx zu2Cn|#?YuY*38Y3mP83T+ez(*{ylqf|9`;>w47CURvBJaAdCkPE6U>cw#u=bb_4(l zC^WxXHvA#p9*^|Xdj(s`-*EvzG>+tv^~|2ox5o9UGTGd#&V1m_DpvQPQZWKp?>$dD z*H)hUd|R`7n6ldBv^WD$dZ7sUw`9i;Y#6!aZO3@^y{6gymv8S~_|mui@#b+u0OJAx zogyKVgkW-lgHN@b5&-Zb63PU~c>!z~1p^O2G078N{W{ydc&TjyrIc8ZUg#wl{5*h2 zdwdrFP(b-axeyk+j*0(*jMO4c2!US}zT;0HY&2FEX%YiimCNV!+1y>b?FJPI(#1qt zVsjKB3)T>jrJn8p1l&y?%_XduMqZn)69*D*rSD|}B_~z;rcH+6uwg(uuI<0<(0cV3WbZVc2dkNX;;oF?RnHB(WX(ccy zMWEQf?*v;yE4uy-ciPQYe~dTOa##f}==ew8f06wEIxfo!Ah1M-I0r5dSK~jryTdL_ zu9U#P$nws|tgB{XngoNG+7(&Ltlf6Z{E_YJ?3}Y!+NVGAc3TLpmBn9!GT^F zY^M6p2o`(0_#K%TXjZ_!m0Cb#b~}0C?Sv&yzhU|yATg!aeCa22_WN@}Ys={O(LtIL zt!&jInwVr+?V<;$4?>>5_@5pE$cp@gD|ibkw|>HfCI$d04?QWSJOD`hRy$bl2M|zK z7QiD20BC$h72EMv>|qb3dK&@&?UXw{8c=wb(*AyNqpyci6@Ur)bAKYhqf07y;cC$s|)3Y7r)ZFk2}$} z;7%XZvhb`CW*PvndSJuw9dBKs1IKy*p8eJjZ7R$@*3$r+vjD;d54rw%B_B3iV}tG= z00b6pKrm`{pi+m5Jyoa>*m>sTZSncffeSz!xU@}6~h%MvxCH>R`CU| zd4T2bSq><`5QCNVDN8s4pu@E;GZIh(nFr-R7O6J@fat(b;|axZ)!;|-P?peUhFn&Nij!1?1|b$+_w^g>%HMr2T_Hmgn@UN9&5*a>Mn7|{vl_Y0MUfU= zc8mo8x({#XoFV;I1)u(I1psNj;&{dV;U0ic*doSI50VEUo4*5DCyhONKqNq($@M;$ zR=7pX{isbGS8L8{$k+MpRqNlr#qRvn)fhO#)~)>x(VBj99HIUSp{26FBB#dr7%|PS z`N>-4O0&G5cod?gb|Ay_2>y;|T;;--O_c5|Lm(IhA%rEw00>a%RBL$%V~lM#Oq~yr z{;TLRXNk_4Z%bc#v5hWRYP;2ILc9Tw71iz7kq3s>ym=+2!FT|GIsk?Kg9!ja3?uk= z!v=Kao^p)t|lV8nC2X>K@x$I9z?kQXi5SRXbywY&knl%Ti-S#98iW;UD-{WBE?qZtb%y(BG?PeoG64Wcvz{b6gVTnBRnZ<_4r(f)a=)ur*>UGQ z!*(FhcXOQ%k^ZRR+J<*zl(b3@D(f7HMt&dzpt+(h0-Lpkp?*IZGUyY4FS~JYx_WM>7oCQ#xYp`t;#>R1tU>2d(P-7 z5NQ*|TVnpY(5(Y|DDhj_Zl|BrZ`WP>Zlm}mO_cEHXv4@!<@<(zo(qI9U=<9wu*DYuz8Ns{7;~m4mAMCER+LTIWq?UZb3?{N=9i8({RMX zsQ5ZgC$9!su0pAArGVDtQB@(RqnF!bNDthK z(%Xxi81|4s9TMOJgZEr?LCo~>p;bB}{`Cl3G$R03X1cLmUWWdsj^->BbQ zS`aNr(2;S7VYutfOA`jgA3_4k+m|3Br;(eMU~uicV7@)!HLtOo(d+|l2z)J0E?s1; zdV?8NqeJ4AF;c~W5c@TA|NHt^j4y~VwZoKx%t&v#6Ui>!QWS_PURNhJwg7j3FY*7o zfAUkS{_u=A>h)OJ&fh3Hv$Qk_Qy&4UEq9yHKiMU7jHG~P&3<`_g7m99!d)0l( z?I3HO6N?P`rLX_e{-1Y$z_znDi`{gwgRogw$4%vyi-hBR8vZfw9=USGuR935n*F{q z0HCAfb&E%j;UlH9#PdafoDTs67PUA?01#s11yTUZ5CQXPfIeIv4-YSIKdjdgmIWYk zm|86lEAxYS@`z=iV|d)Sm(<$D)H=BRW3uwL%uxEvzUX;$A4LR*Q@^WIy>F$Y&`?T(bb{K>uf7o$wet{yERJo%C_p zilN;>X4|sC4Z~~ReC+rkfOD_>@TLNF0II4CrnRy^0N^_#fq-!UfIg1e*U5l7p)Bh3 zyG#>jFO$Z^%B|{QU=hzF)vW)S=h%8s%gAs>FS+C@O)xK1q5ks;Nl&sCbstpBiW z)e*~kiKJ8+-V-p&0Dum{h0@hSnbKYRXdi603^L$`U)^ZCen689Tm@~~ROC5}h*lZv#x;!+}Y{v+qH0Q4PSXZ9c&t8yBkm5#p_^ooBl>fKBe~(@Ksw-_6R(Z#qqao=M zDwEq^^W?eZ7!)}G5W+{=jFE^q**aZ9PXqvP zF?9ew6$=6RqaEo0Kx3d(T>yXzFoE#HIuQU6;gfGJ0Q8)Gs_jI#s&x9IefJOFedTcz0f7G>0I+($0KhfDII(Acww4EK000?(3QTDO zN_j-n(Zc}h5l|sMPr8@N^v;=OOD?_CMwYGswG^#mF61*lN;&;Cn8pRgK|CHJi!cbH zaQ(*5+ux3X(!E0qNuPJZvdpk>H}MB-FLrhwso6Z#g3{_h~*xo6R1cK z!bGVvjwU8Uar;?Atsb`4L-&*3CS@TOuwF_>^k0);bZ-l;d#Zem60jG^Qn7v&i_tB6 zjdjpbWfV5B+P0DkdCb$FZav2=w+(n>h5&#CK#w8=8MngE?^kmm7X{2>VD2p7buz3i;2`q8o96&2`X0Oef)nkLZwqOD5wkMx{jD6gUI~;d!1U#*~@p6S$@` z4?tMA0RSi-%EA@^&H;djod>}8c<{pbq{aF3C4*tr!@gb)pXt`m|C8C~`}mw^CYwfu zy;Mj`gw3MrMnw6Qh0r{!M(Zz+)?0Q#!!>e9x5p#?ytypQ>u(y|1H;>+V#R*QzX%d|Z0i1hfGXN-QvvcCA zLICa_RO;B&0YD>$5vI~(>as#ym}wQstvN^^8E$rvYG$}N<)pO7oMflG=q0uufwLRt zeH+z$R6SUWTZUf+x3P-G1mT!pCc#Y^9xk{{@}+V^nc(JSCEzTNpgarhxK6t?uvn&Z zIK!GB{Mc;mx{w|S8LrBP^4hh^t8(z6tb_vx0Mla4x9o;c-&xnrDgW%*^z0~k$X4xG z&t>jYO<6{~E1HC`PR8%VK+071JN5~Wvppz{ZR#EeV|#!~jJ2HN_T#g2OZg`YEXEHf z+Nt{i0Ggi;QouSOu&gE=al@C%#<=-c7$-!p<#~}}P#6g1p;RSTXpYi^U_?`rCt&P+ zKKz76Sf?ojkO2TabJ%pArBa}VZ%KOvH{TF3|K9cyTehIxKKYS9wUdu2A@JS19x_@) zUKLvyFpxS}c)myShUNA^_G=yh_y$rR55hBQ(H$W~RSD;ezjTDk`+o1o_t<4`{9W5K z)M=fwj;7Tw7G)1)O`TN48y-xYaw<&(qM5RL^qGFuUW}a}Tjwm>7vl)N{IU7H-3UkO zh_ELMB8{>JOR=JwlK`g;0CEMAj-(KPkBy`Gklz`du_e_eA@+YXbpNh9@1~K~7em+u z&{b2IRT(#IBz9g_Nz-dCNYrN>fc?v~=5c@c?YJZ5j=hrVR9@rk1260&4gf%};#qQm zT(ABC1%S801MRH!0m*q}>Pq+k`#Sq=UTu@zdgV#J?VD8L7r(c6(aW!Vcf$j~$EgEU z6^60D6gSGhK|8u+r4hR?feDR z=r(R*Ac;w5WO8yqe6(@k<_fkgj6hLaDvAwXGT1cU( z;LJ?N@BpXopnlB@)o3K+_yu6YxT z@a5=T2qm+F=W6-@K#y_+asZrT#aI&mSDS2qArDJ+tbaN`9!;2I&2?Y3>dm)MNK5Ur z)kd3fA=Fo(a6ss{AfXpBof^u2@^R1hbBp}n&o>|a$VZ@6pf(T7L}|B~jLWV2WHf|S zXz6Eh>zGJ!1Ju6-50{z;l?bg?R9z2J;7J$10-d(je)T(N9ZmocmA~&(c>r)%5C*93 zqhC47bzoo*@1X>6Auhc5LhD&|yzLk)+irAj2^ZF=WQY@8oS+a#F!T&aFaOn*Vmc&Q ztP%=RoJn!;K1xM0q%MCZf=P}ADZV=Q(~pwuWkB2a?6Zxx-fDxtf*?q|n#w293Qks9 zxbk%C(a%(QH2^?V{{A508Qnc7&V=h|ZT9FQLZP%Df1E8j@kH{p=hB1;Dg-&=yD8|R zTKw&JH%9hGQc-Swx;I6qR`?~2YpeI86#&HVw*ml-Qzr{_G3?dqy1Q)MHJ=WIz#&-T zJ@h}v15u!)W!+ubp-;Jfj*73q9Hq)wax2et3=gklY6PfK4~ESB@B0I_$syHUTdku@ zW44!l@}Mo9Ka0+Fe{LtO#A79TgwJ=t#Ckc`15}{uj#~M0_sZhVM~M<(^qhNrDenP@ zsGvdxxiUal88AfNyu7cx$iKK@i@ov<@30MfxIe0Qj$+oAX(wCJJOS3a`*}}Hf9=ue zQufF3^&&4_C_K~D}?ZQ4ZzKa_)Kjd^jOAhD8LGh38tAt&QBS;aXa7h>uhz$_+r0H#)kN~&4V~5@U>zi!^*P1883oW>?bO;?D+by2Sc2YQW z(hawtwG%=BVbT+E$Gt0hE`L)R8+5NfL=r;D+p(){#hIsA=e)VL4V1I98glB@^{*Z4 za)>-(3G6odO^@y(j;k8sex2|Wa1MB~u;FVw< zbx;zzuEr;RUm8#4Br9zdr++o%laFHIgyu{s4}3oZbtHe3tl%aRpq5kw2Hvfa^+(~J z!R;HZyG8-41%39fU-(n&2ZJ(A%(G%+?cR9DQ^A=kWw!*jer%!@$H0d(ZoL2uLmBTT z0FcHj+cz|gQS%^N%32;b-}<0k`ij@vc3P1R_b#=nr)Q2@x3Xq*4{Y91l>_EG1sXfUH=xL_wdZspcHK6}Li4MUTby6zWi7hiJOM>dKC zSQGo34V#4koLw&KQr2=~Q)aH`0|Wpi@e5F-ZE8n}vaL{Fu0V;-DzQ!#6>;+2nUAw$ z&UuavQV3@IZqN>HMbg4u%Vo8%} z<>!)zKrU8*0Iu_+*hsS(n1TB?+r~TZv|;fB^l}go%_au}LEtqKiJDhkrm)As35`Xd z7-_uG@$dv6N&bg6ks`#!e&_+(1Qei{5V4KIG0SYlsgJSlqZir^6vht1EF*N`sg@BA zUX3LjE}7t^BfZgt3LlAV5+6r}SrP!4WD|`SBMcq{_!a!3`<_GI>iX~eJLcq1JhfAG zt-FXH52^zpq(9}2yJ4bhs=}4Z4^s(JuVHeVMPfYMWdNJJPQG5Gfm;WsMFMe*%OyWP zEyT2d^}NxW!`dq|ca`0ALR7W}<$YJoZ@0huzy`Bah|N^S0)Q=~0XEtJ`*+-6iQi9JB+hR(M3d};$v+MZ4YdQ#x&ba&ZN>RZ z8r=W^SnY(vij1?0{kR7-JuBm%mS!~0bV7l zFIH8AjblaVtS}#SrPHS6H=dlyKg7ep12B;io$@nIK4}Mh#29(u%18^KamwcVZ`QTh zXUT)@nIEhH3_OtnonOb=(7tkGP~mibFVk(cGNiKmZFc5~i>~{hFaF*|zQ*%UA^>pd z<$t%)s08Sp@#KDtvMZ3y1Jn%dfRp8Q;PA@(nt2|h-?mI|KmY9>FGEEF6>IxY7e*|6k$*d-j%vy zpenhkW+?hQm(J#*S>w-jJYyo>rwgR)UiBR;Lt!$^E(wJi%EF0z?snz-RP*ZvJk4FY z)Vk-*qZmXT#SddtmH_U+N+Rg#0-2I;UfYRC8QyJFiIcF&dmwaQ`Qb|oRga~tqfsi- z3D9-1I6J7Vu#m9J12^7aJFoxO05${wHEuCw%rgM6YEx@i0S~1tWwo>Qm(gyT{{6>jelG%A>JM5tnqW4Zhs;8>xYOL@7417a~M8ON4E-bp>S{) z3qag*&ybyW!K-a|1qI(e7b77QlJR;BJh$q}drUgUmO~ap@Yp0zS6UZ&!_4_Su2@@s zPC5hHSMf}~$8yb+vJhVcWbAog%dtJV1Aor~z~C6(YHdRg*oDu1yj^|O|5CZHY^7%a zpj9?V+3J#0xySt+6WA33`er|0x6{tK;=Q3Aa0CEGJK&lCKwB?>3ZqO_Q#GFQ+#vU~ zD?GVMAr;Qii-F$KsX&lhrCWz_}f*;5T!o^JFZG@BOOnwsmnh5gKPib za^1sN0C3q=8*R?2NdSNrf7saJbzmUC1*jOyZV5#3h33}7lnDcPoDPjUB4tV;gBA2U z9-4c!4Ry}3eIkHySv^-(qz5#zmk4lDApi6o1uN4o%|EGxK^(|Q6-fGCfayV4Mw!{g z1^YnQN1?3bz1X^8y=}SsE>dnD@UVuzL>7#xibWJ$3JrLPQwIX!FmJz`4W~eYK4xnw zZO^AvNjdsW$|C@X@PT3$j)J`Rw@Uz&{ZT89vDr(O(1@jj+-$n`@x4KgukyQiQU3Un zBoj!m$xw7!Jc+#4%Er$CmZn#FfT^fKsGQ3!_EVUoy8d2U`_=2vH1H|(xh#BzfmDJT z1yaOn5t+=ZFGetw533{*HIooZZUGaQ+Uu_P zBfD|UW-Im{ZROtiENz9ALVX4Y0Z#Nw^%_EkMye@4W`LvMPy6qHRZeRNC1>k6H?hX(6TdqpH!o3(GdZTP}x%=SF!bE;IoT2bk=gk!M!os>ydmoxvz z1po)M9S-bEGX(%Gq_{Za!Q<2N3hSW-08G<>7}w*spC=E--&la_#q=V{Hh6Q=4rnO+ z@nvv0E_`32U+Y`Dj5V$FS_xVZVTYPM0d_|b_BE9a79VJMCvxLKd(Pumed?Q^{Dar& zwkHMvZjCjpjAjqO!2$pf&7z{yjfCs~73fe_0J-aG+96Y3%1+ijvEkES{}$T=58ytk zk5p-9p+4eO`6tDcit<(|<4IS0-(+oQ>26)iEk})a4mmcVx|Z2&1prMSBT$$O5}O>z zbg|p|A={|!@YZ$fY|EW%%OoxtS0u+udbTKw(9239SSZyr` zSPhcCqknoRNo>Z4x(T*qsm))p(&jE&M4XRyy&SVo-$g(VA{Ycm=5mWX11@RzcDbw&sZ7XH8Yd`zxt3LMstKgUd7Cl- zpKOXA<^Vt|N9&;(05m)R^*;79?XU9yz(WA;DPqo42ndkx{v(WzqZ$5fH&XcL>tDtd zAP<_vjY2XIYViPs!aox1xQIQYLvs-3T zDx^-f;q6dMT`{i*5CkKhABy`{=as2Q6#%0^T)!x}*z2AdpmMT$Pv++&&!6@~9HUl? z+viNX&C@b936vQ?2+OFdRb{fY7P1Z#2NyjMr#++B!TV?MN zOm6@h3w02}8iiF}#G9n;bk~Nez530+XSc823IR~OjDE0LFWa(a-A65e2aCsmwdu;= zOZ!UU>!+KZ4gi{7j{<;}B^c&Q+j6`RfCB(L0Bv{x)Hgu}pH_YX0BVgMT=|3p$(%Zl zMRDUbpQ3=-2A3-$@d`}Wi}YVWInWR`>?g=w0klTYcCa_bRL?h6MLWUyCQ3WsZykxu zsAKP;*!<5X>msUzyyc#|ev^N#1pw@i+cm~r#GIFjt+@`*Z&x=`8}B$ENcWt{m*_EY z?7rDhK*18gqk6US{ zUviOc!vnBkh#Tu?d@GXF9zW*G+434FuvPvTVw05`x5CP$O;OpxzQxIu&jTz)b>hRtTq6EcpY8~ zV1{!LCj0QbWYjrnJFe|yJvRWr{_jhU6kn~8gOb!i6S-Zn`iV{x+{ukkTld&_*DQpfqDR99T}ri-UT{<)~mbh z+_R4P=(j)mmbdDw69RyWtVKROJpTRV!@ubDn2A`~PioEyWg;~_N)obX`YZr6!YYQlqpz`N4JO*(rM?VVp{9#4+ft;M1# z;tj|@k`?Vh&}tKVxn6N8m}pO56q8@~#CS=u`uf%z0z`aA%yNN(iayux2MPl6ibY-h z5&#eiRiP0+?`HGNrY8Bkp&j;Xxh3zo-E05LMXdG%1*{t{Mgrg|s!EyHD-Z|>%=Vx} z#(5n903ggy-j&p7*3nwnr}+tj!0?(KAoFq$>2m{2qKIh%t9142E9|h3Vfnw{sf#@% zpelcksIchN$j0S%?xf1`ZxTeU%74smk6-4z0-m8!R9s7(Tg81|c**ZT{M$;!Ka_kg zSwl+2q_Sk^?0)Whl=%Zdio2mOj)UqT41HYW+RTww4;KJv0wAoJhbsUm0|JV;`l}M= zK9@l;6jhQL(Ad>kwT0}nwV(OC+5K4m+Dh8n;t(mECXX76M)EvW{i`WG(=DaL7y_6` z=1%ebd==IdFoz`H%M23#+iP1l`nc!5`NFTbv9YG;irmX&w*3LE{1ddC5E< zH(W4SCM^Os30wgt)@Mzg5D~Ok>$AE*>HF5%C$IWrTy=|x<*|ek$aK=CtZ}UN%3cp0 zltUt@R#4+QdF9^+7Rbf+?Shv~ilFQ#}H{bPu)rt2Py63UBxQ>eb^v$70 z*C+~y%mt8k9nhu_fLHpH!jCb3Z=}<7?X)q%&+MZaDxb+b022WK-=E?c(FpRqjfS_h)ow4}iH+az38N=UTFi z=h5&*K9=8)SA&x-)xwAmtaB#9VPFA=v(E$o=zOv)r0haNBK4`pg*`lIt59+`eCVUp90+4gb!uX^o!?Ylp{38udq`}8`INZsSSU3V<4+YW%$ zGgVxWh0cw6g+I2;@1p=b2f8{cpzt(IRHqOzwfn7 z^S0bePU-8D2B|q-KXCx!&+&+b;fy)O;d&+fYXuV7`4s}pfsCf}>bq{?M;RRNJ>}{I zU?3fko~6||<8KLES)Ja@hL_qqt5m)I;fgNKTY#69H2Qf*QM{Jg9LV71ZQFN#|D8|i z_i@M%lK{ZWF8}+Di34z`LjWOfHz2pbB9Epn&n!}O39G-3yT3{}fJ}GpR)jzi=5UiL zX09({L6=TB)gE*1b8K(#EZc;+Jg8h(p&riR8CQBpFCEBWs~VCn6~hGn;W!{`s!Mr{ z`zVcSHnP&px<;5hSHAJ&;qAC1(*?)eOKyr6r7wRxnS-1zxx&9+mCN<}DCHBp@v zT^S;#NPVl<)#xV(qda?D!x3Wt!Nr~xKFKB~T9PxgAg4Od;~f{qc`N{E#3Z?YrT3Bj zkX$q(Wr>?2-bX?8E2tgO4SFij39&f3)&AyBf5$F;(Fv~nJz5(bSYh$#a$%!4*Wr-J z$N>P&Z*IQx`TYussjY7~hb#vjOOFk<)(&p-)o=O}`|f|=NLXSa1-IsST9JzS$jX-$ zDGyC(A1facBr16Ta^b2lSL2OVGvYp29-Jw808}~}Ia5QPCO`l^?-c;I9toef12~a(6RSska$Qy9G%l&fX`P{{=U;fL7*fX zo$H`t9!?O*Exe2nl8}q9jxhPIt>aIZ8jbTd3EjK^9#Q3@)P%IS~d?r){~ zVOgpQf^Wp&O7`K3_j4oz0Kd;TFo7JK8qPG@`KnP%dG;({r)63kD=S2TxQ#VAx_2k; zeZDuko%O!OKJ@-~+C|Sh7TyHsWu3M;5jRe~F9)rYv{v%-CGiv2OHx$XyeEVx@|!Ba zm6?uVYHKNbM#3>6!9B z#PrWG;B(A|Ix+x&>HvsIGX?+*0|1^g9RLsk>VXQ5^t}WC7#?K-v;u&_ti=@VLYWf+ z5CG5~3DHtyAU`|Vi;J1WHUC0QjWxG(R*FU;?7B;kG%5R92Lx0^DE4xmQXpK2pGCr@ zDHnZwz&6tdo9g#x0ssQZ)?b-mZ3w)~=^GEpD}V7`s#^R~q`B{=ETeSyH3y6##OBI9 z0swukU;6#*I%IoLhBaC8^|ZmVIx(o%ym? z+TN~S+sya(B4mqn@AJ60Vj&{jiJvAAz(lr#lH4(HfUkx^j}}2m_I4E8@V-HtL$RjL9b0WK{pxT1kFS`??XSv+&PeJb1A^p8gpqr#lr`X;{Qv;U z$xO)Hl?n?uyYGgD-Sm`400~g{lg4X20H6>+nM{=mX`n8AHI8Ct17f=%v(^T8Svv(g z3gr5~`<<_`*S+Fw$bX!as)=RwMUZTf8$ja~nq>QA%i7N>5c=@!2LO0UP!XX@BqL;_5e%(07`R~5Qgc(fyCbN zj0-t&gBPQnxt)dl?8U=&@5lcEfURnP^0bjP1OONvMri>Yyc%5Up6cmPj7LT3(V-a4 z;ROH(D177B^6r1VN6T2aZ+h)e>FsjDZN&0Zho4i3X1T@?2X#v;WsE z=?FTs2a9+|)oMCtSW=MvefXyLO3O4C|Fc z>+R-utULk$0Qc!uKKIIc4Azu;U<98u+T6eNwp^y3>!{R~P$xjW&Q%1b9hd0H&KVjU}2*+w?UR=KZLpIp|aWCVXpfu$5JC&IKU&}pp6%#|5#H@unvKztTo zJ>#7?dLt5$Z2`1tF7w~a6U@TK)`D$4cf5%f05EZED|~-!_#n0%^(+DwyVCXI#wxRj zmF3WmP-#P{^)pA^4{ovBKKB{=#WE+UN*n^LXuWuQXzPozR~Wg{0i2TwqtZ6&3716Hiz283k7w@tQ&OeTf5HPIP zzxKAEy|9xoF>73T-eGg7tDkcR!z+3Qnmhpc^^Er{7TV^ggqiBU2ic@ED(?T9H@wHb z^TS_a`7cx*Ir>9THWn9g=d3vp{cw{r;UUJa=Md=+r7+DBl+8%&I1pxk(5Wwn;1K=J2-1rIsw5fLo>u7{~*E5hiVoT|!x$Xx)u)!by z)H8r;E-+=~bb>egI8Gs&-~n)1;Yvt~D-^(aSOWkDFO7wlpk$J9o>eB#A__7@Fo&v5t z=%E7@Rtq+j3krX5j+OG~SB2JB4c%`y{r1u$0|4ahJMT}@B1lx;QlM3y05!eQ{}d$= z5byw)ng{8DVJ0g@$&nQrnjmzJdi01WlRh7rp#0sx(CmO%p61q$Sh zt=tra>tsI?%4#|;Z_$LocjOU4S<|7iQYN@YlMJ80YS#h{W0ngw#Pg-^w{}X*UoP)- z7z2XR2~yQT?o>4l^tKqr$|h)Mhn2bZ944rLWUoDN^Dk}d_rHzu!s6ADxF6kwRbv>G zzlwIK!d(HgvxfEW^$Q&I1=3$ryzMZ?_9vV6<}nQOJ0Sq@a0$Q(>%WM?DUqsGBi`Rf zWyGPK>+D^>{R(@>o1WzgowqzPlJOm-+7a)&D>6-ahVp|*54V+HE6mL(#bMeY zfXQO0A{A8P*F_Y^ZQE`3hwu42`|{VAGn9V0YaZ@I)C#I^nse;sIy{0OA0s6tHsujxYeAUI1PP04|2I0NMor zFk}=TuE_JLeMdRpT#d_F@ym zeL9Q&U>-XTvwk|K&$`O`8VKLa*W0fqwCioeqp_t;;#NL80Wc*uzAJmT?zN(|-o<%| zNTH_hciO=Y_uXD$axbXp^zR3-QKTeoy;XeU@6+?so z-oE7U1AsVPIX8491o}XSPo1?ILjgi+8l>O_kQn1>Aoj=wqw0FfXje`1;T_wV80w~; zdb&O4oafsAW$!!SWGlZPp1+G*vf}q4+5@SR`1Y-xm5;T@rfCyMn_$)-g zh#id*OGHIu@>xFhOZzl2`NgP7L}Q3C8byRlhugQ8+4=ter=0ViGv&;m8 zDFC1XNSa&OVkLobjFzX13Mru#1Ps+D_n<;+EsXEFGyKup{ve$5l7~qkCxdo*7%l&@ zCOZHSFU zwEsK=3>s|>ZaM^2{{X1TG#Otb=1bn#Yy0DS000;Myj5P~Uo8MY7&_}?h^0|20C5oD z>H+}!Ee1fl0TKYP7l4)mh6RlQmlWpA&O)H=w)x30^B?~b?)X?E)K5vsgUKgx zB>lr2gBI2|4W0~%0vMk#$+P+@<;g|_*^NNp578eFL0^X~*$deuF&4xMuolcp`CX=1 zW6tTym` z033caT#mmu_t2FG0E*r@4iY05l5CSN)gm%w6DG3a$EuWJwnS||p@%r>)#Ivwc4x%>Bq zjr;BhH~uC3{kJ064<@aCT!_^Odj{cy=7VDUWa95Qo;qVdw2M& zZ+$=P?>_|b7@Oc>BY3WcA++3{f|ZOZXLUvq^Lp;H6f{VhW1HxlrOW2CXgv~UZM(ea z_@ZShvH+}20Ki@VF#Q7n^bF$@0HBI}Btf#Q=EwA6S^y^ZhTHz^PhrYI^D(C2V9$ja z1=!MplQjb1s-fwZrgAAGEL{Z2MBQ>yG{ejLy93Dbk`6umAuc07*na zRG*eDL7^^>YSNK>j3}G#Nd^E`!Jp_N9z^6k0_^&sy$|9|AAA`adfQuKODFC2W z!;}gI0G=8s%VsDlQHpHArO6K$n!XKo44j7WucOcbfB<^WVv`I=!9X!pqRjAyQ=S%% z|LxxnJ4VODUZ`AyTSmg3{cs<^Ki#?#9-l2{bd6-%T*w-|aeW-rH520UyDuz>$B>|+ zg7hM;5+=XfPcobc1SEpJ#db=@;A>{*=0S=dM}oq?Yls@}LquvXi!)(vHz5kO2S8xw z4L=DJU;T46JHj$h28GdD!$Kr=xM5}peFw0?gz{LR0%mX!s+hW1`48G9O<@h@e?C13 zE={*-%^tcHAb#b>>$pXw)xDK2{5%N=^@v~DaOu8ai|aB>wY_z?M#gRpZ#w^F;kB>$ z&CriaNRc0@x)0yHwP>h|X3y_9Gg>&Q5dhduH_LzyCP%9_h8i>z`UY7-mb3l3H+?L8 z=_`MSj+&_HKLjlkzG9wRMGOtoiP@WBj?J9F7-^|V0DxGRl+l#9w(`pE|DyG18Fbou ziQE3NBmiJ?XXu-`6IlR{MH=A6#c6=DzNw*Rkwe$hZ0~t5fG49JFw+2O0SFrp3FX1< zNXJCq5AZXlN|)e1>!kph!s_k0E8O*o*xSvV zEX0NmspT!u-nVQC8}K(?Zn?i3~*z`0zS9D{JHs=RGi}@}u#xy`8ef>QJ02Vec8V7w7cE=VAo&;XB`aSQ% z%U{kMqG4F3XGTj;&^PpqHu}^$_=son1a0l|Q zClJt7D{lqE!*M*F*J7l$nSy$N66+TE?mi)R3n?|Q&0-`7gedGm?Y0j3+WXsVV_AN& zLO2yby13Er!h}gIyqALqyQgdx6Y749&u8Xu7anGT;ijQ9;*0iS`ud?!(8wYItk?w= z2(isjB{m_-c;=3q!>@k$Z(;t&KVp=Mo@dqkN|rM&#YY&J$tYA-r{cKW;*&VJEk||* z&HYJz0i(kN@VPILk0x_yWqu71isnz(lh7UAfdjB68kz^kWrevie1x^BSpiJbd+$MX z|Lx)Y-+y{|%jJzI8( z<7o062k5H=0EiivTf-PuoCP3D#UHcnfLVlz>l6q8rtb--pZb{a=|6dsG{_ak&S&$j z6Ep}BMK?j@Q5SZ<L4VQK?DR0e-8sPA2%VAI>NuCtAc3&+4&fW+b+3o;I zC*1fQ!41<_*yn(oh(aFPdxeqo(Bx^JXX;!D{JS526RR>Mj`0&>l9&6b_CAI2dcm&L z;;aPi&_u13oUrDFlM>*Qqj|?5?LHT_O>9KY%iAcYs-!EO>PxNXl!-@8fq$QKbP)hh zzeXMakTJC5K>5r zzWxCwge-|LZ>^=m=&A8ZIr`zepJaDOm|WR+ zfsLRLD1nl>FrlOPQH5!&)BD3fZ8V&H#!2w|pC)b+QT*ADp1#`50_h*R{9J=*ebsrH z9L;H*VaZpdVa}kyM;VdFWuIqWK#VH@A&hmxvR-oeXTt|R@kP`nI5O0#2r%Q93}h1X zqnVB+%3pz*wl|iMCihK(?TkKGQuxa}brJ;F2>_Vdg+f4&G5|n#r1dher%(Ecuz-&3 zUy3L#!Q9PD`3ECwesIg~aMEi40B8Z&dVdJCLqS&CQG{`87$+avfVDvs*D#cqtvley z{rcBIYw+h_JZ1C$%f2(vEfqGs=#xjl<6gdoYOdzw$V3WhkzdJ_n$)6&F4kBbSbTByFi3HO!TNn(T@(W8#Zl} zX!=3;<|`2TGXMcnwjPJm^*D`l>4&GOUW`*SZA&s`+(m0VtY)W&j{L2gE38gv<_LbuTIX2M{3D0#Oi{ z1cgFCy%6rxqll6vp>08MAc_d_^Wevy7`7e%=&%R2(Md?aNfHlcvtHjYp|}q-%!YJilruB29^BjUC7N}w8WhPNjairit)y4k7QrL_Xv_YiwjoiV1ine(P==~g3so`!a@If7`Y#FhKK z$imbKeWh6-`8n30zBtv>*G%VHV<_k%=^cSN9cEcZ%`=C8j?Jm?_ef<5ab~xL=Rf0d z;k{S9SbYB6Ir9JsRYv~hgnFv+@cL~4fGKsPea_Jwz$u$N&4IT0H?0p`U@j%e__FtW zA^gdwzZ|A|klI&Ay@svZ5eq&V@D-Hu)1Bv=5ZU;*ek=m_!u_Y434jBJJG&zyd+8x#P#A142%uR{3$ z^rx`g(bC2}$c~!UO;d!LmTFd~w9z$bnY3Yx#|U!CF?Y+O_hcc}NKl+vw7ADjbJv`D zWmf7wNV5r4(CcrKGD_MI3$1*kZ+l(|E~WL98ay=ifJ$~H_}&NThsWRj(BLbuLQ3UK zW}-*{q-ydKWQXUX0H2X!ZYfxk-}tulZpnhEd@+Q&Wcf{i-_Fd=64H#0{~v4mC#Cw zWwCP@3xGT`;lo$NR}8_;@J4BXK;mU}B?1Bb8yYN!$F`}AhDLcTF>wn$ut>wh9utmw z+~Y$3maSnw{;s3V>0bB)rY2BM6NuB@OY(>Wxb_b(w%{5-Zobv$!|_EAE|+iskVtLa zoCThgmeZHGnhnUS9aQiz9#PjNF>Q%^K-&yUY6yO#4|)P=lD%Lc{V0sYDdWB!M0dYl z^r)}wzdPLYoqq`7M?aJaC=G2CY*C{_8Jn|Avk5n#%qf|PG9f7)8`br9O)@Xgiv+}h z006Oo(}{LdTdeszjjP5WRq)6F{cC97^Gquv_~Zm4y<`KlwYhyaK=Xe>c>iTD)V4j0 zSrG>v6>k?`5%99r@>|M&4h!{!#P9#f&wL|X@`oP|eW)uxU)c<6 zzyL@e!HF#NLkeYyUuW0}VABqNNo!xDKuvc{>9t6EDq7znzEHIOMF1eS5J);B(Jgp` zxDIK7VHzM^04rqyFo7uTfN$QNRssY7sBc6kNOoaFUH>qE7#z?Isx*X+6Jz1VkHhyb z3xNd|HxBn5EpM9lFFX#5Q)YoQz9e`P;*rXU1j#vX(4auim)B#B2u|A3;l9>RygbR#9zL%OiBIt)vUt$A3ORyl$B7SH_>VePzP?rEZ@@Xmt z47#JB*KVjHd8AY>t(G1eAnnx+*tqad()na)v|`0#&i0yr)mn5Fk>;xSJ#D2!`6mQn zvOiX4xJ$IyumFI`Tjzgq-qE7DwgdokhPb@oh&Fjq0HCRd9t0>$cK{|Mt*{;=(2A5f zq=wBx7et#nM%ZGhW?>(IF;8HVOGQEMeM&DgN0G954mAA!Uw=e6`caPwvq0OENTZoS z&H7yvxGo8tG=w+zl;9yUdG_9B*DbotsRg=VHw8OY%WZ0MQUh;fEjZCQF~;a=neS!AZAJ2c3aqS{rAJzPyR#alD4BHTLHmF zP)EpI7z|pc*}zIUCoO!%hs<~i6_}ppmu2V&f^Lc?*0iK(>%;&+H<-3y);ZLT5mAPz2)q%oh1?AqN*_RmsTR0B=J9rZM}4= zr6nVlAAFATt^hyEN`SDy5=$!M>nR$-aA8I#eBkQ84p(0FDRhH9I800-4RZhh0F0aN z0$Oa~#1O)!uh@Grh|nj9!P+?hNK&i}0LWf4nkt&%<@`MzUmlp)Iwc&=$~3Pw0N|5@ z;S&Iyh+Y5_2csDf0RYl583-uuH3-TPtjpn8x0}B6oiOoF{~%H7tnDDe-vEGG;7AKB zLPe%z0+4PUyO->Hf<`JR7SyejM*nyk)8T?w1TN(Zl`7c}{DT@i-po9Jdo>^jz7G}b z24M-K-@Om-65@mCi)Y(mx|LjjOLO^FEZ2^G!i4F_^Xq-u!phWSPM}E5-euE zSZ%_j4_O2N?V{L!aAiS@y=K(Q$!Lx5Vpr2a|Vh5`Vo8{t5} z-87Os&N(nz;u_PP$75A<(BB*YdI?*m%rR;nX8IvmMTY@+H_&7cbA4%K1brk(%es50 zq0cfmo^QIQn1Mn+JjcY_kxw#eo^B^2Z59<%B~C37dM(R}^09M#F`fB#pdOm%uZh`~ z+bRdF{aBy(6{Ot`$U8a2Swa3BEkUkp*D(N?xwU@7Ynr$K2moIAdmq2O2LND}nsdhh zU?GpPw8zrNu3D{UWNS15-3FiL2Rxl{5K*1a2WHm7mY;jybeWSZn+6^3KkQx z1qcdyO-j)8%V;ZF!rVw1Qhtd#0A)1xsm-%H9D#uO{HXDZ`O!=!zA}*yF{SD*(9aT) zQDTG_u%rMWPUmx9f2!@q0Duj-P;+9>UZiTF);2*X0{+6po#E6c9TPtKp4WseU{FJh zCz*tsg%$$DR7^4Nzp@D$`4q|l6Eg7LO#nc`q?!Q${joN~<}VuYJqs|(3X2ms{MtYN zet7ex??aCNW|U&s0!0b?1I2#oBv2N0Vkbs16>EuKsX(Toi2_MHf7zwG*Q|8ls`d+| zxs?R~IuDJm3AfZxswkbwF$@%5MF2n>JOOYe7Jw_l6oLSIx1t9C0KohvxBw97HiDR& zgYg*qesF!b>+k*+E=zRzL-1*}x*2?$RyaJT2wA${3DJnYa3 z|9cMvJFD0YL8#LYUxp994}xAJ=(U&*wRp8T@w&(?fg+_rquOvLwjxLq8dC}+*v{FL zOEX#^(&fooC{2r(N`4+R%x84|=t90B^;I@gss!2badkirU0k&It)=R*MEqsBFC$Zv zWP>R!sU(bLfzBcMS{a(^kyAUujpwuo0$ghVz!%elwV3m&J|Ha{%-}%o0@C3;TY$2* zIp&7O&pChsMrqThMFW|{60p&b_h_a`>BytP@bM>v?GJizs11#vnjj*sfwI{neO7BZ z${M>1Akh?E!_85EY#d#+=Cl!Omx*Q=k*T3QKbgUXd`XatpPNC-YWnGguxB1WVrKCP z_XUWd58vH^;J(TKgtouqS27RCTLYt{RY5`+r4G5)N?>##>rcZMiHrc62N`WEwfw0; z^7xDfsr9X0!1{PI8?l4Hhaw+xk&n3D2DJE0JH$3f_?dA6AUQWN z5&BT+uLmV%PyVfA!{@I4eewCDRJ){Ut0qtF3vmK4eImj_XvZxM2>{T=YQb5wJ8Mg$&CywC$iU&J<68*D5MwPEP`az|}=&PQkCy z+`O&UUyy%GtcX5zD*)gwk#_UET)(B37`=lO3bVOOT{RAn1)jrLMgYJ*01#zdixsv2 zC;;G^_rLc{_MgIUJ1Gq=Rwje_nGfEEeeAgene@{&*I4 z*Q8ZW0f2UFBp3%FP@!Q!2wR}@SXlF_5bT3&9Si?^4{OvT_NfL9UmHEC$$f?j6#gJB zQNWW9M8Oe(sReeNM3aBHpI!ZZW(jl&Ytoj_DRd=EVVXPEOf2`hPP7JCQoUV=G$>46 z`KG2Q*hP4VYF<&2gIr&O6{FK~d)K#Q;zn&C(l$JLxd?jE*Hs^X!k^?Hrjg2XI{;8m z?vazXgd5L2T7Jn)3xfck@#+uUmRJDD8f>M-ye$*Y;4=PGeN6LtXtn5vSmcSgzqs<* z>JXn=2}uXds#nrGfUW`YU#qZJGa%dnJZFYc`|P!bN^LA6gy?roCnTew+KkP_vZ!pw zdH)B5!yf+VuvU<@!53d-kYWLHtcGy;@o%}Y&v zjJToEB3FKCPD>b{H_gbvzS0OpWwQi18J#xzadm*!Gw%tQ^34u5u7 zgyxTXec`Lug^S+yJ_N;XLq$K-{vX&1+GG_*f;nqY#EyRM`*#zm&nEYDlO;>btY*=P z2!-ZLyfo`mcok>mPFKEhA`5`fp#lK5A17#Q1puzO`XW&Hfl32Z%Z_g8GTH$n2=JVD zA`9RcX!wW2|9^0p9z^L`bUD2r(%|m+&;Jf%-})!G=61m(Pu_$x5z`?(H{gE{8#je2 zOV#3&9p&hM??sfo2h)j?A{9}sV&r{dKk3_^(Sia zBlGK9iXW5MN_bb`{}(YP06+)pen5Q+GeNZk0D4Y7%Dl_%u<+AGTd@rUx)4|KHamg&o&X(Vl>fS zp!0Bb696WB^JKE?|{vDE#^Kq!KVx6aLJ} z(mw0V8qnYLO;fD}3^9$66q*1CUYyq>_#gwu=b_uf$T7!+Lmzld7(N8G)!`c-15=)0 z@E`*TS>_djV2(n?jlL!yDOY7^xDEqnWbC+IS^Tm#EHQ0ruo$Dr1p(W$j378?c5)IG zkf*{%q}yymMYtZM3GKZ3S7GOlUxvLj@1r0MOZ7^yplE!29xeD$=FMcSSv`!o{Z

  • 94umJP|0ECh4VQzRUEKoyX3({}< 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 M{9tSH!r1HnKX7CG`Tzg` diff --git a/src/images/shadps4.ico b/src/images/shadps4.ico index 4f71b2341e2945e944cedbba16deaa088c5c0e71..bb50f9995ac82ebe259df8199ea9a805b35df411 100644 GIT binary patch literal 74814 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%0DoV=0>tZQeC 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%0A8Yv99)G^l5p_*S*rm=y&^}EMxUC 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�L!W_6Ta~3r^-kRtQ#L*(E^krDvx7c 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 z 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

    v%KTq#G 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Ν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

    |HrJBQ-)u6z~mz*Daf3pf>&)?fgcA0$Rmm(1&?$ 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

    IR?wLvOBHpHt|Bk8#lE0lA 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 Date: Wed, 31 Jul 2024 19:40:25 -0700 Subject: [PATCH 40/44] Add new icons file to reuse config. --- .reuse/dep5 | 1 + 1 file changed, 1 insertion(+) diff --git a/.reuse/dep5 b/.reuse/dep5 index 5f081569..cfa8fd09 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -37,6 +37,7 @@ Files: CMakeSettings.json src/images/refresh_icon.png src/images/settings_icon.png src/images/stop_icon.png + src/images/shadPS4.icns src/images/shadps4.ico src/images/themes_icon.png src/shadps4.qrc From 6d0a7631456486bf4fe5a13f2085111e7fdf6f5a Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Fri, 2 Aug 2024 12:57:16 +0000 Subject: [PATCH 41/44] reuse: fix license for externals (#358) --- .reuse/dep5 | 15 ++++++++++++--- LICENSES/BSL-1.0.txt | 7 +++++++ 2 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 LICENSES/BSL-1.0.txt diff --git a/.reuse/dep5 b/.reuse/dep5 index cfa8fd09..a80001f8 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -14,9 +14,6 @@ Files: CMakeSettings.json documents/Screenshots/Sonic Mania.png documents/Screenshots/Undertale.png documents/Screenshots/We are DOOMED.png - externals/stb_image.h - externals/tracy/* - externals/cmake-modules/* scripts/ps4_names.txt src/images/controller_icon.png src/images/exit_icon.png @@ -45,6 +42,18 @@ Files: CMakeSettings.json Copyright: shadPS4 Emulator Project License: GPL-2.0-or-later +Files: externals/cmake-modules/* +Copyright: 2009-2010 Iowa State University +License: BSL-1.0 + Files: externals/renderdoc/* Copyright: 2019-2024 Baldur Karlsson License: MIT + +Files: externals/stb_image.h +Copyright: 2017 Sean Barrett +License: MIT + +Files: externals/tracy/* +Copyright: 2017-2024 Bartosz Taudul +License: BSD-3-Clause diff --git a/LICENSES/BSL-1.0.txt b/LICENSES/BSL-1.0.txt new file mode 100644 index 00000000..2d87ab1a --- /dev/null +++ b/LICENSES/BSL-1.0.txt @@ -0,0 +1,7 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From 21462523ded65dadad253f232912828080a54991 Mon Sep 17 00:00:00 2001 From: Xphalnos <164882787+Xphalnos@users.noreply.github.com> Date: Sun, 4 Aug 2024 15:07:10 +0200 Subject: [PATCH 42/44] Minor Qt GUI update (#363) * Minor Qt GUI update * Update gui_context_menus.h * Update gui_context_menus.h * Update game_info.cpp --- .github/workflows/windows-qt.yml | 4 +++- src/qt_gui/elf_viewer.cpp | 1 + src/qt_gui/elf_viewer.h | 1 + src/qt_gui/game_grid_frame.h | 1 + src/qt_gui/game_info.cpp | 3 ++- src/qt_gui/game_info.h | 1 + src/qt_gui/game_install_dialog.cpp | 10 ++++---- src/qt_gui/game_install_dialog.h | 1 + src/qt_gui/game_list_frame.cpp | 12 +++++----- src/qt_gui/game_list_frame.h | 1 + src/qt_gui/gui_context_menus.h | 14 +++++------ src/qt_gui/main_window.cpp | 1 + src/qt_gui/main_window.h | 1 + src/qt_gui/main_window_themes.cpp | 38 +++++++++++++++--------------- src/qt_gui/main_window_themes.h | 3 ++- src/qt_gui/main_window_ui.h | 16 ++++++------- src/qt_gui/pkg_viewer.cpp | 1 + src/qt_gui/pkg_viewer.h | 1 + src/qt_gui/trophy_viewer.h | 1 + 19 files changed, 63 insertions(+), 48 deletions(-) diff --git a/.github/workflows/windows-qt.yml b/.github/workflows/windows-qt.yml index 099ece0b..019a8ab2 100644 --- a/.github/workflows/windows-qt.yml +++ b/.github/workflows/windows-qt.yml @@ -29,8 +29,10 @@ jobs: uses: jurplel/install-qt-action@v4 with: version: 6.7.2 + host: windows + target: desktop arch: win64_msvc2019_64 - archives: qtsvg qtbase + archives: qtbase - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. diff --git a/src/qt_gui/elf_viewer.cpp b/src/qt_gui/elf_viewer.cpp index 47a25914..72861d15 100644 --- a/src/qt_gui/elf_viewer.cpp +++ b/src/qt_gui/elf_viewer.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include + #include "elf_viewer.h" ElfViewer::ElfViewer(QWidget* parent) : QTableWidget(parent) { diff --git a/src/qt_gui/elf_viewer.h b/src/qt_gui/elf_viewer.h index fbf14d30..a3b85223 100644 --- a/src/qt_gui/elf_viewer.h +++ b/src/qt_gui/elf_viewer.h @@ -14,6 +14,7 @@ #include #include #include + #include "core/loader/elf.h" #include "game_list_frame.h" diff --git a/src/qt_gui/game_grid_frame.h b/src/qt_gui/game_grid_frame.h index 19ac531b..ce775315 100644 --- a/src/qt_gui/game_grid_frame.h +++ b/src/qt_gui/game_grid_frame.h @@ -14,6 +14,7 @@ #include #include #include + #include "common/config.h" #include "game_info.h" #include "game_list_utils.h" diff --git a/src/qt_gui/game_info.cpp b/src/qt_gui/game_info.cpp index 39cdeb75..0a472eae 100644 --- a/src/qt_gui/game_info.cpp +++ b/src/qt_gui/game_info.cpp @@ -5,6 +5,7 @@ #include #include #include + #include "game_info.h" GameInfoClass::GameInfoClass() = default; @@ -42,4 +43,4 @@ void GameInfoClass::GetGameInfo(QWidget* parent) { &QProgressDialog::setValue); dialog.exec(); -} \ No newline at end of file +} diff --git a/src/qt_gui/game_info.h b/src/qt_gui/game_info.h index c137a5a6..b2b102e0 100644 --- a/src/qt_gui/game_info.h +++ b/src/qt_gui/game_info.h @@ -7,6 +7,7 @@ #include #include #include + #include "common/config.h" #include "core/file_format/psf.h" #include "game_list_utils.h" diff --git a/src/qt_gui/game_install_dialog.cpp b/src/qt_gui/game_install_dialog.cpp index ab4fc273..4b2b8528 100644 --- a/src/qt_gui/game_install_dialog.cpp +++ b/src/qt_gui/game_install_dialog.cpp @@ -1,8 +1,6 @@ // SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -#include "game_install_dialog.h" - #include #include #include @@ -14,6 +12,8 @@ #include #include +#include "game_install_dialog.h" + GameInstallDialog::GameInstallDialog() : m_gamesDirectory(nullptr) { auto layout = new QVBoxLayout(this); @@ -21,8 +21,8 @@ GameInstallDialog::GameInstallDialog() : m_gamesDirectory(nullptr) { layout->addStretch(); layout->addWidget(SetupDialogActions()); - setWindowTitle("Shadps4 - Choose directory"); - setWindowIcon(QIcon(":/images/shadps4.ico")); + setWindowTitle("shadPS4 - Choose directory"); + setWindowIcon(QIcon(":images/shadps4.ico")); } GameInstallDialog::~GameInstallDialog() {} @@ -47,7 +47,7 @@ QWidget* GameInstallDialog::SetupGamesDirectory() { layout->addWidget(m_gamesDirectory); // Browse button. - auto browse = new QPushButton("..."); + auto browse = new QPushButton("Browse"); connect(browse, &QPushButton::clicked, this, &GameInstallDialog::Browse); diff --git a/src/qt_gui/game_install_dialog.h b/src/qt_gui/game_install_dialog.h index abd447d9..6f439e81 100644 --- a/src/qt_gui/game_install_dialog.h +++ b/src/qt_gui/game_install_dialog.h @@ -4,6 +4,7 @@ #pragma once #include + #include "common/config.h" #include "common/path_util.h" diff --git a/src/qt_gui/game_list_frame.cpp b/src/qt_gui/game_list_frame.cpp index 4353964f..2699c961 100644 --- a/src/qt_gui/game_list_frame.cpp +++ b/src/qt_gui/game_list_frame.cpp @@ -190,17 +190,17 @@ void GameListFrame::SetRegionFlag(int row, int column, QString itemStr) { QTableWidgetItem* item = new QTableWidgetItem(); QImage scaledPixmap; if (itemStr == "Japan") { - scaledPixmap = QImage(":/images/flag_jp.png"); + scaledPixmap = QImage(":images/flag_jp.png"); } else if (itemStr == "Europe") { - scaledPixmap = QImage(":/images/flag_eu.png"); + scaledPixmap = QImage(":images/flag_eu.png"); } else if (itemStr == "USA") { - scaledPixmap = QImage(":/images/flag_us.png"); + scaledPixmap = QImage(":images/flag_us.png"); } else if (itemStr == "Asia") { - scaledPixmap = QImage(":/images/flag_china.png"); + scaledPixmap = QImage(":images/flag_china.png"); } else if (itemStr == "World") { - scaledPixmap = QImage(":/images/flag_world.png"); + scaledPixmap = QImage(":images/flag_world.png"); } else { - scaledPixmap = QImage(":/images/flag_unk.png"); + scaledPixmap = QImage(":images/flag_unk.png"); } QWidget* widget = new QWidget(this); QVBoxLayout* layout = new QVBoxLayout(widget); diff --git a/src/qt_gui/game_list_frame.h b/src/qt_gui/game_list_frame.h index e9f75afd..d8bccf46 100644 --- a/src/qt_gui/game_list_frame.h +++ b/src/qt_gui/game_list_frame.h @@ -16,6 +16,7 @@ #include #include #include + #include "game_info.h" #include "game_list_utils.h" #include "gui_context_menus.h" diff --git a/src/qt_gui/gui_context_menus.h b/src/qt_gui/gui_context_menus.h index 9f895360..146d5c34 100644 --- a/src/qt_gui/gui_context_menus.h +++ b/src/qt_gui/gui_context_menus.h @@ -165,12 +165,12 @@ public: if (createShortcutLinux(linkPath, ebootPath, iconPath)) { #endif QMessageBox::information( - nullptr, "Shortcut Creation", - QString("Shortcut created successfully:\n %1").arg(linkPath)); + nullptr, "Shortcut creation", + QString("Shortcut created successfully!\n %1").arg(linkPath)); } else { QMessageBox::critical( nullptr, "Error", - QString("Error creating shortcut:\n %1").arg(linkPath)); + QString("Error creating shortcut!\n %1").arg(linkPath)); } } else { QMessageBox::critical(nullptr, "Error", "Failed to convert icon."); @@ -183,11 +183,11 @@ public: if (createShortcutLinux(linkPath, ebootPath, iconPath)) { #endif QMessageBox::information( - nullptr, "Shortcut Creation", - QString("Shortcut created successfully:\n %1").arg(linkPath)); + nullptr, "Shortcut creation", + QString("Shortcut created successfully!\n %1").arg(linkPath)); } else { QMessageBox::critical(nullptr, "Error", - QString("Error creating shortcut:\n %1").arg(linkPath)); + QString("Error creating shortcut!\n %1").arg(linkPath)); } } } @@ -308,7 +308,7 @@ private: QFile shortcutFile(linkPath); if (!shortcutFile.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(nullptr, "Error", - QString("Error creating shortcut:\n %1").arg(linkPath)); + QString("Error creating shortcut!\n %1").arg(linkPath)); return false; } diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 3f325ff4..b3778be0 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -8,6 +8,7 @@ #include #include #include + #include "common/io_file.h" #include "common/version.h" #include "core/file_format/pkg.h" diff --git a/src/qt_gui/main_window.h b/src/qt_gui/main_window.h index a7013738..d1ef48dc 100644 --- a/src/qt_gui/main_window.h +++ b/src/qt_gui/main_window.h @@ -10,6 +10,7 @@ #include #include #include + #include "common/config.h" #include "common/path_util.h" #include "core/file_format/psf.h" diff --git a/src/qt_gui/main_window_themes.cpp b/src/qt_gui/main_window_themes.cpp index 858bbb07..c89fa5a0 100644 --- a/src/qt_gui/main_window_themes.cpp +++ b/src/qt_gui/main_window_themes.cpp @@ -7,25 +7,6 @@ void WindowThemes::SetWindowTheme(Theme theme, QLineEdit* mw_searchbar) { QPalette themePalette; switch (theme) { - case Theme::Light: - mw_searchbar->setStyleSheet("background-color: #ffffff; /* Light gray background */" - "color: #000000; /* Black text */" - "padding: 5px;"); - themePalette.setColor(QPalette::Window, QColor(240, 240, 240)); // Light gray - themePalette.setColor(QPalette::WindowText, Qt::black); // Black - themePalette.setColor(QPalette::Base, QColor(230, 230, 230, 80)); // Grayish - themePalette.setColor(QPalette::ToolTipBase, Qt::black); // Black - themePalette.setColor(QPalette::ToolTipText, Qt::black); // Black - themePalette.setColor(QPalette::Text, Qt::black); // Black - themePalette.setColor(QPalette::Button, QColor(240, 240, 240)); // Light gray - themePalette.setColor(QPalette::ButtonText, Qt::black); // Black - themePalette.setColor(QPalette::BrightText, Qt::red); // Red - themePalette.setColor(QPalette::Link, QColor(42, 130, 218)); // Blue - themePalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); // Blue - themePalette.setColor(QPalette::HighlightedText, Qt::white); // White - qApp->setPalette(themePalette); - break; - case Theme::Dark: mw_searchbar->setStyleSheet("background-color: #1e1e1e; /* Dark background */" "color: #ffffff; /* White text */" @@ -48,6 +29,25 @@ void WindowThemes::SetWindowTheme(Theme theme, QLineEdit* mw_searchbar) { qApp->setPalette(themePalette); break; + case Theme::Light: + mw_searchbar->setStyleSheet("background-color: #ffffff; /* Light gray background */" + "color: #000000; /* Black text */" + "padding: 5px;"); + themePalette.setColor(QPalette::Window, QColor(240, 240, 240)); // Light gray + themePalette.setColor(QPalette::WindowText, Qt::black); // Black + themePalette.setColor(QPalette::Base, QColor(230, 230, 230, 80)); // Grayish + themePalette.setColor(QPalette::ToolTipBase, Qt::black); // Black + themePalette.setColor(QPalette::ToolTipText, Qt::black); // Black + themePalette.setColor(QPalette::Text, Qt::black); // Black + themePalette.setColor(QPalette::Button, QColor(240, 240, 240)); // Light gray + themePalette.setColor(QPalette::ButtonText, Qt::black); // Black + themePalette.setColor(QPalette::BrightText, Qt::red); // Red + themePalette.setColor(QPalette::Link, QColor(42, 130, 218)); // Blue + themePalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); // Blue + themePalette.setColor(QPalette::HighlightedText, Qt::white); // White + qApp->setPalette(themePalette); + break; + case Theme::Green: mw_searchbar->setStyleSheet("background-color: #354535; /* Dark green background */" "color: #ffffff; /* White text */" diff --git a/src/qt_gui/main_window_themes.h b/src/qt_gui/main_window_themes.h index 8b87fbce..6da70e99 100644 --- a/src/qt_gui/main_window_themes.h +++ b/src/qt_gui/main_window_themes.h @@ -2,13 +2,14 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once + #include #include #include enum class Theme : int { - Light, Dark, + Light, Green, Blue, Violet, diff --git a/src/qt_gui/main_window_ui.h b/src/qt_gui/main_window_ui.h index 7b5bf181..69d71847 100644 --- a/src/qt_gui/main_window_ui.h +++ b/src/qt_gui/main_window_ui.h @@ -44,8 +44,8 @@ public: QAction* gameInstallPathAct; QAction* dumpGameListAct; QAction* pkgViewerAct; - QAction* setThemeLight; QAction* setThemeDark; + QAction* setThemeLight; QAction* setThemeGreen; QAction* setThemeBlue; QAction* setThemeViolet; @@ -76,7 +76,7 @@ public: MainWindow->setObjectName("MainWindow"); // MainWindow->resize(1280, 720); QIcon icon; - icon.addFile(QString::fromUtf8(":/images/shadps4.ico"), QSize(), QIcon::Normal, QIcon::Off); + icon.addFile(QString::fromUtf8(":images/shadps4.ico"), QSize(), QIcon::Normal, QIcon::Off); MainWindow->setWindowIcon(icon); QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); sizePolicy.setHorizontalStretch(0); @@ -136,13 +136,13 @@ public: pkgViewerAct->setObjectName("pkgViewer"); pkgViewerAct->setObjectName("pkgViewer"); pkgViewerAct->setIcon(QIcon(":images/file_icon.png")); - setThemeLight = new QAction(MainWindow); - setThemeLight->setObjectName("setThemeLight"); - setThemeLight->setCheckable(true); - setThemeLight->setChecked(true); setThemeDark = new QAction(MainWindow); setThemeDark->setObjectName("setThemeDark"); setThemeDark->setCheckable(true); + setThemeDark->setChecked(true); + setThemeLight = new QAction(MainWindow); + setThemeLight->setObjectName("setThemeLight"); + setThemeLight->setCheckable(true); setThemeGreen = new QAction(MainWindow); setThemeGreen->setObjectName("setThemeGreen"); setThemeGreen->setCheckable(true); @@ -285,7 +285,7 @@ public: } // setupUi void retranslateUi(QMainWindow* MainWindow) { - MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "Shadps4", nullptr)); + MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "shadPS4", nullptr)); addElfFolderAct->setText( QCoreApplication::translate("MainWindow", "Open/Add Elf Folder", nullptr)); bootInstallPkgAct->setText( @@ -332,8 +332,8 @@ public: menuSettings->setTitle(QCoreApplication::translate("MainWindow", "Settings", nullptr)); menuUtils->setTitle(QCoreApplication::translate("MainWindow", "Utils", nullptr)); menuThemes->setTitle(QCoreApplication::translate("MainWindow", "Themes", nullptr)); - setThemeLight->setText(QCoreApplication::translate("MainWindow", "Light", nullptr)); setThemeDark->setText(QCoreApplication::translate("MainWindow", "Dark", nullptr)); + setThemeLight->setText(QCoreApplication::translate("MainWindow", "Light", nullptr)); setThemeGreen->setText(QCoreApplication::translate("MainWindow", "Green", nullptr)); setThemeBlue->setText(QCoreApplication::translate("MainWindow", "Blue", nullptr)); setThemeViolet->setText(QCoreApplication::translate("MainWindow", "Violet", nullptr)); diff --git a/src/qt_gui/pkg_viewer.cpp b/src/qt_gui/pkg_viewer.cpp index cf0b2167..cd2ce2b6 100644 --- a/src/qt_gui/pkg_viewer.cpp +++ b/src/qt_gui/pkg_viewer.cpp @@ -3,6 +3,7 @@ #include #include + #include "pkg_viewer.h" PKGViewer::PKGViewer(std::shared_ptr game_info_get, QWidget* parent, diff --git a/src/qt_gui/pkg_viewer.h b/src/qt_gui/pkg_viewer.h index 0e0a8706..e040d595 100644 --- a/src/qt_gui/pkg_viewer.h +++ b/src/qt_gui/pkg_viewer.h @@ -15,6 +15,7 @@ #include #include #include + #include "common/io_file.h" #include "core/file_format/pkg.h" #include "core/file_format/pkg_type.h" diff --git a/src/qt_gui/trophy_viewer.h b/src/qt_gui/trophy_viewer.h index ab79ac50..2b794593 100644 --- a/src/qt_gui/trophy_viewer.h +++ b/src/qt_gui/trophy_viewer.h @@ -16,6 +16,7 @@ #include #include #include + #include "common/types.h" #include "core/file_format/trp.h" From 7308864537d2fd5880485dd11f90e0c1810caa1b Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Sun, 4 Aug 2024 10:49:43 -0300 Subject: [PATCH 43/44] SampleCountFlagBits::e16 - GetGpuClock64 (#360) * SampleCountFlagBits::e16 * GpuClock64 * GpuClock64 * Update pm4_cmds.h * Update pm4_cmds.h --- src/video_core/amdgpu/pm4_cmds.h | 11 +++++++++++ src/video_core/renderer_vulkan/liverpool_to_vk.cpp | 2 ++ 2 files changed, 13 insertions(+) diff --git a/src/video_core/amdgpu/pm4_cmds.h b/src/video_core/amdgpu/pm4_cmds.h index 9b44da02..e5f618cc 100644 --- a/src/video_core/amdgpu/pm4_cmds.h +++ b/src/video_core/amdgpu/pm4_cmds.h @@ -652,6 +652,13 @@ struct PM4CmdReleaseMem { return data_lo | u64(data_hi) << 32; } + uint64_t GetGpuClock64() const { + auto now = std::chrono::high_resolution_clock::now(); + auto duration = now.time_since_epoch(); + auto ticks = std::chrono::duration_cast(duration).count(); + return static_cast(ticks); + } + void SignalFence(Platform::InterruptId irq_id) const { switch (data_sel.Value()) { case DataSelect::Data32Low: { @@ -662,6 +669,10 @@ struct PM4CmdReleaseMem { *Address() = DataQWord(); break; } + case DataSelect::GpuClock64: { + *Address() = GetGpuClock64(); + break; + } case DataSelect::PerfCounter: { *Address() = Common::FencedRDTSC(); break; diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index e4539123..82ccf5af 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -681,6 +681,8 @@ vk::SampleCountFlagBits NumSamples(u32 num_samples) { return vk::SampleCountFlagBits::e4; case 8: return vk::SampleCountFlagBits::e8; + case 16: + return vk::SampleCountFlagBits::e16; default: UNREACHABLE(); } From cdff4af38da1d832e35d8c057d698f38c64b2932 Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Sun, 4 Aug 2024 17:17:34 -0300 Subject: [PATCH 44/44] add-SurfaceFormat (#365) [Debug] liverpool_to_vk.cpp:SurfaceFormat:395: Unreachable code! CUSA24620 Unknown data_format=7 and num_format=7 CUSA03082 Unknown data_format=2 and num_format=4 CUSA19345 Unknown data_format=34 and num_format=7 CUSA02411 Unknown data_format=1 and num_format=9 A duplicate was also removed. --- .../renderer_vulkan/liverpool_to_vk.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index 82ccf5af..01526265 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -342,6 +342,7 @@ std::span GetAllFormats() { vk::Format::eR16G16Unorm, vk::Format::eR16G16B16A16Sscaled, vk::Format::eR16G16Sscaled, + vk::Format::eE5B9G9R9UfloatPack32, }; return formats; } @@ -410,10 +411,6 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eR16G16Unorm; } - if (data_format == AmdGpu::DataFormat::Format10_11_11 && - num_format == AmdGpu::NumberFormat::Float) { - return vk::Format::eB10G11R11UfloatPack32; - } if (data_format == AmdGpu::DataFormat::Format2_10_10_10 && num_format == AmdGpu::NumberFormat::Unorm) { return vk::Format::eA2B10G10R10UnormPack32; @@ -550,6 +547,20 @@ vk::Format SurfaceFormat(AmdGpu::DataFormat data_format, AmdGpu::NumberFormat nu if (data_format == AmdGpu::DataFormat::Format8 && num_format == AmdGpu::NumberFormat::Srgb) { return vk::Format::eR8Srgb; } + if (data_format == AmdGpu::DataFormat::Format11_11_10 && + num_format == AmdGpu::NumberFormat::Float) { + return vk::Format::eB10G11R11UfloatPack32; + } + if (data_format == AmdGpu::DataFormat::Format16 && num_format == AmdGpu::NumberFormat::Uint) { + return vk::Format::eR16Uint; + } + if (data_format == AmdGpu::DataFormat::Format5_9_9_9 && + num_format == AmdGpu::NumberFormat::Float) { + return vk::Format::eE5B9G9R9UfloatPack32; + } + if (data_format == AmdGpu::DataFormat::Format8 && num_format == AmdGpu::NumberFormat::Snorm) { + return vk::Format::eR8Snorm; + } UNREACHABLE_MSG("Unknown data_format={} and num_format={}", u32(data_format), u32(num_format)); }

    |#%Qa|o&Lg7~mQ#i- zlV&OFAot{|mPMiCz*6)*W7!t)J@xE^p6J%;@9y^D@6-NQc8Y)fOyb!-}~}2x^To!5`!6s9>u_Q%(Gs1+Mv{W z%C6Y&>wV2ZVdWW{<1Oq4iz!OU|xsdS~A_aZrHsEu?fC2?dtTY zBL<{v2k()_yoI;}`m}}hNctkIo3@>OmU*|GzL6@JFY6upnZAs6*`9ir_ihgVAp^>H zRP;aB2mUGVj?@1%98GlN^l9m12lY&s{Y&pO{+I#apByWv48Rw&Q{-7N*TRgq;Tt%q zdul>vHd2;)up+haS$?my8+@H*M#h@u4I&n#wTjyLJP#}z6TXmn2iJ0En#<=*?nyM8 z?{V}qG^>;c%8HO3-0yJ#=L_Am5&H#p%W_e^R{B-4%=V)gja=iU{hu+b91#Ed^L>VO z(7qr4?t`9ysXFZc*#ZCX@c$|NXZ{TR1dqPxv6MskzAeg!YJTtZIr!6aJgcBC;J)M; zdBrh+xLWv*ej(du!)NY8W8caH=KQ+qqycIEmB@glf1&A@$DAK7LG(K$4^WQrrJZL{a?gMPmk83jfP-JEckZOKMK(LGFegX$oyLg+7@E7N*g6ljyfe9BcTlFGbRC z&~!2~LOQ8OYJuA5!}gQ0iKUbJq}iE>_wciNJ@ZqpdmPJl*WOXSImPje_H)M{;UH`V$%Wt_mcmkqW@ni{weRK ze6TI&O1qRYcWApUeJ|TIW8dRO40rm>GeXyOI(B$Z<^F9c^TuoKAMvKn4_giyz5xHf zy5IR{=LO6G-$q`)$+Y{W$KiJxb}l;WG58$CCCuS@T-XKg%m1rkXmSfWwsqYAUh%Yq zHExBFSeb4dcS-uv8;A`!idbRnfL3w|%_WcaEaZTGwPtK==P)Yxk3K4FgwA?pdt~3H z{k|#wLk7U3jz_c;I_v-K#eet+@u|$8IX3<4!QIl=U)L>N@y2fHYT9MYaoxzhUVI*b zJQ#tz9DzI-b$qupaxkBz9Zxy&M@E`4EUz8N_Nc5A}ZKp6?zv!G3vP+|PYsZ4UqDFwSF1@0Z+PDddSV z4RWqo@n^XE^S6JzLmt%+p^_yv`zG zDD}}dqJL|}BKxGxfZwJgAI6=sPr79Y`L4|)7JFXf9t7S@5f%^+9mwa<{HxQ-wafXm zF6IU|xZmi~zo+j_9hN@(>i%gMF+x+xDcZ=MqmB3l^{Ko6MUy5_jz9)SHJ$b(Ce3ztH!v%HdXR~+3vUBP;*E05})hQ76X8iwz1_%Xx~ z9@~TU*gcRR#r(v$6S}h|L;1jd#mI(yX8)IxQ%Zv)gwTkD%~9@2G= z=9M>(zF3lst10H`ioS79H}^|E=DFSuNA9&vEB)qJ0vQx?h< zfF7E7_5mia>VW?TW{rMNq5qL@mRH@#u><}sXBGb2O8)ZMU8Ud~>%_AwpUXN{f8Wyc ztFiCrEnV07e13N4^V|B}KDMol1<v(*8#cH$CHS948`Uz-Y^87JkXvyYIjXNY zZnyN^QU8vf{~Iu0R@k?w{q>pz9u);45EKfMenI|q9g#SB;mLIUh>OzaU*kSw{qT8V z+n$KdVyvMIFjm2O=mXS;6TCnmyhDe=fFR@D)5hu zUa|kXfPZr=tYgj9e|=|S8v5})(ruR?mVP((_35s$N2EWEIwJjc*rDl%U*A35`~}vv z{u?aBdhOICh`5|46%`lSdC2fb%(Abj3 zAs3VlSw3h(C?BR{_svA!*Fp8jhlmg5Tr2N(UvWu!AO)VpR41zV4D=gRQI7j)N6*J+ z#wCtX8sIbKe)#UnzR$8I?_Z)#(hUA5pLL-4-^BhOJ$L})1LO(!XWK3Mjpv5VjV&Gi zKgT@23mp@3LRqn0l%L~q>tuPV$@$vq@A>oQp3|AfLoQd9yYugUf3bSy_k|w@>_u!D zN88JBcoX}P*76+pfHJ?wJaULl!#{QHDZ8g1jQN zn=$}@V5}qLY>bhge>%+_`pxw3Zy7``G3;IZ3!~vx<6qrhqYb`vy>iT3mu+U7RM)X+ zqwVdx;{M9GO5Vt0F4`cskMD|cFuGqKS_5q{=7e4`|5xY!AL8FCZ_D^U9H>jvFBgqY zQ$MkDx_!u=>Cp-7Vafh=FVyVKUbgJV0WEFVH$C5YKzgqJ!1NsFpPaNudT7*cYrv{-Q`3g7ao*FIggNk?Yk2j+*bm~`{gI}feb83%uTGOs z|}{g14&FV+7$QioLYX6MhH@oarM^K-sOTxY7jFaKVB6yMd~xA$|lL2Q?p z3&1C59~rmP2v4+V8?c^e3_9kT({@Wgobhc`y#4_52e7XoDtDifwK!>G& zOn((J;VQoCa|q)62*?Mb&}tnI7p=sR1(g zO!y&)b7+N+qAkJU3~bGr;J%46>i3;vK63m{?UZ-6HV3wb_6PY9Qq7qMveEsf`hS%3 zCg}gbzcw6wmib1WaUaV(hf$6H=-1r8+jtCKlRuzY+?#P*eXQ_K)w4Hu?xmC?-p6zD z@ul3ewQC%6!c!UB&S&o_ zW0dEY<4)^a^x;PQ?}#?2JcGI_1KRM1b;f^%hmZyGP!nS%=i)}{C{?Tw?dIH839cpZ#HUJh;0SybVLn4+ZPtd%$MU@1QT@66}Rb$ai+>k$uxeZ|I*cd_(Uvzjy8n$gZm}VU~VFa_k<7PMCX@?>8DMn<8wCtS-<5> z?y2S8up7)P1@Ec*#sAcI#rS^{`+wAl15zz9QZ4XIwckQ4Dib9A%(IZ)@{(g(eFfV? zfpeZ!jeVc(`3}!jewAgYK8F9b$_J}2Hv3+xujBK2zjt^h->b3R`L`GQ?(-Tct7I%m zHNGtWJmjtZfcf<0+`;(i8UHs?566X(lY+RRG4#{7$y@u|IU@k}Us3MH|Ax7b{x4*J z$8Z3w!XD5OfE+M?fc~$@H?ZR2G~QuIG z$b`+b$&1yy`uFHRpHcEmEAmYW{^4AVam)7=_pwG-{Nt~@mhu1g;U7Ustn|+ojY*Tw z>63mrtWSEPrdR0twXFsAH_Qd|&?;yRvLGP~k}?4MAhDNsYIEQ2;@k#~>$%T+*R^*~ z>)UrqE1SEe<;^|PvgV#?SzGV4yscka*3vI6Y3ZAuZRnq#uH7>|S-W3)vhLvYRQ=)U z@3pT<4^KHf{qgF9(=RUDFWvg3UDCWy^-DGQ9!ApdjvbT*7reGx`sNWFkq_VG+_#|% z>9b3*87{+ikcRMi7#JRkJPDbAT)4KRk=PZ^Z%ie3q%;njLSN-1d_mJs=!gHIKfcI8 zsTTcGOMY4Rpfx5{*)Z{)`#;&O)1UtTR|5aln5pm;{35@qE2O|QJf-f;q@PRDj+_a3 ztS0@iQocSPgFoTdEE_8C>;evahH<$1dn+<4%FTDq$@>eD;WuKZ&Bb;zr;oD97!=26 zP3Zr5tRI?yjdvljg1=J+gip{MB8URad~=Ab0OlKr6)x<5k463*;5%@=05Qgs zzw)8dhxkOT)VodM_Sv`Gp$D!r1pNukG^RG@?b-Af9!|> zX>Ic$?1w>VN&U`@D>ydnm7Z(Z5C6l#>Dgw+7mbIdN2l$d?jE~q`t`7Z>E{2yK0F71 z!29tTz!T0%UIpGSLl#_!-5^~IU5cEz92s%dTYID{$#ZB7$dzx}DUD?>i3x8ZmKvLH zG(L#Y{5BSwVsuH9*@J#E@?jF=2KQT*M!tQYzjuOvw=UsdUf)stBY%`6Mq*ACo)x$H zilsVYI5HXAB{^3+6VjYJPj9!$O`>TZ3t%VW(T z?{$r=nCw!$H+LV;>x_TD+XgQ${#T}-EFP04s{e=g4*VBmeDK`fBPH<|<3U9dsf(89C0Hro%0>pZ9I z+2B3+9X234lt(L&H_IgKh^6=-mLNl(YwDZ+K6BUf*o?gyR~(rBUUz7Eyyoz9KmLc` zUbRp9(FMDuTfW2|!k;8YD%%f^Cm2Uugx_HZGy=K?dqQ93P;7>)u^FyGcIcN3|0S|x zIQPVP>`>=iuR3jS49$-7f5!i9lm3SXg3meH&t0XAd5@tRc~;ilq1(%G&UAFAevzrz zI8(sXWMt$-XguV6j7NPblS-Px(d+c5WU4_I7d8;<=8zf6gBHe9`bDbgrPf8hUWl)D zzW!R}6m`%ZaQ;nf`MWl@Skw0(b>&@+_?IPPcH6PzZa8BgvVk!i{=1>4@0b2({#d$a z2{8f7Vu?${zd82@&eyC$F8BxJJr(PR3=d)*OxOX>-jk+%_5JCb*LTOB?1_%;MVnDJ zB$*=(mMQm z>zf?oqoZ3({~!2X4bC@+ee`{55x-zO+y9==#I@pjLkmYgOWq^aJqHEGLry3gHYM#2 zWs9;z*|7nc5wZjM;b%$TWSXlVVqjW}ELd6JC#|Xeba4UM2CC|`{4tOFWv#>;j1Bx3ob70hfDEGUW|OW z5SekYa~9AAgZF$mrQh_bwgEE!_5W3m|Lr#^co!b8jQ>3cZ&%~j&zYYpJO-}??{jay zR-Kcd8$Kg!e6er*rEwH9I66Nv6`kqas`ws*-_-HWNMzi#$hd2fcgi{EYpZEE-y_zG zqrZFoC}=GAPB^BJ58`1O_P9P)WsPIF6x5+CWbAyG=&k0O_ zfY0A*d;z8y)=ya3dnf`4kq^(@lO}%Y-RX10!(XZ$h+R0HwRTO|0TIvYcmP?@hD}gi zuiST?kJbGezuC{7DYuLL4CQCo1|b70*Kfps2mfD=hm86e*;i19_}`-HQU9VHI^kdY ze>%QA#^&prz!vyl-`pLaKlVJ>)(;T2zj_?oKS=y%T(|POl(Fvl{5{KoEDO8_%3}qO zl6Hf57x&?V@EP$u-jko7kG{K!-%VInHp5VSSc2Vl&kDO3Rx1g#TeV ze#>ReyQXIw_f1dKACMld+b`W$dqBE-%7N*3qYg+v9Z?l*T&3(jSpfc?m)GB-FH z-n;sQZtE_5Td%*+h&`(D{}~;j#LT%yVGiYK0q0@kGnO}wYBDqdx)wZK32ujg;Y*=Quwj&6 z7dak6mT3byF8T(?^EsaHQ9{;zo#WRzehcy*{jbi?82dE>xiOM4)F@1PI@N=+Fa5mO(Ti^M=|3;=^nF@b`z(s87Eu zeVILnuRNByChRBW=uE~`+Ca0}&#;|6M;v>!Q?KkF$o-yWoJZ@EzegSD=kV8Z%yr7Y z+a~s>-#g2Scox6ux3LVy+8O^-d+}!|GyACc7oyJEt>eEUcal}2iUpM)3jE{$+pskK zeDT;c<Nnl zdS6WPy|tu}7s`y1)a&iN3Vn{fpE7xVcF&Ll*#-!F&*nbLVwu86k)Kl@l^r2JN_pbk zrL+dw(2=^QRh)CKL%-xw${;Ok?VFai^iR*>hj@lLjOQBmNXr_Di6Hjj$?42pOxio$ zKKjVD>9ITZsK)=Fn}`4FNc_h7|HZL=*IxFodVWjzcP&+>z(3b2^XH%&#lNu%ZLCjl zuF|o$dtRy!jg8kXZYOWvG{z(o!1_3BVdEx-@mcI&iSEA$>|Y>(-3!G(bQQW>SvC=S zXXXdN>_?!F@$7$N-s3|((!}?G@iQ3r@DBZ{-t%o_!M7PJ83*dTjAJF|W3T3DyvIav zIEmvF$~Kc{*GrZYehrzY&V(|5%frq+WInI(e-&2pZ=G=Ep6ht*?gZ( zndh9@k2o`8Q%~I|J^Z~E7@zzhtBV++z&BXP_+OP)ga6er zh5x9(&n(IB%7*$5_^1Az@GrzS!M{R484&-hEA1ft|HS{?I5tgU{{P39_DzpX>yKXS zjh){Q-0T#7JNOlERfbUm-q+2f%}Y6?+-m) z%7T{S+RiwRvA@4b;9NT(Q{Y~C137L`j)?dCeRE@pILEu!Z;ncN5x-H#kXc+8{*3as z4fr|qQ98Hzd;>nFnnRgnUbJ5|{_klS`GE@l>8EO*-4gyA>HF;ej=tu5V4wRdV_tYm zon~y4YZTh>g*74zYKdc-aZ>;ARZci==QQrPU9su=r>lv7=x zy3cn@zr1o#dSKE%%&{C0{?w%{2Ssex^5%Wh%GUjnhx?}$(2}-&)3Z&)dEs~cYt4b_ zFXOR?F4-kDe;nBX#=njn_=dItGUbxjAPe4rJ)qx|dANwB#cw_nxn(X{#|1GSpiY4a z`J2zy-Fg2wmw(&JG1`-7RgPTi=a`p8_81fDKEHLyJlnM9%z?}S^-LGP?SS<3kFNvR z|A5!=_+uY0#qU?_FTyFbWU;Rx$j}_tR~T6FpOtJc@aJ^d$Bs>3d2^q1G3_~>y0svW zXYiiJGm8Aeo5O#`be8+dyDST$uPs02tj2bhjamO!t}ENccHFV}x57)(FK!|J?_Bi% z2=ss5uEFCgns-OB1~HF836r$6AWgfZ7x0rTZ7Te!`c*ez^F+PFpF{i6m(Jtb59^TME3k+D zQP(#;K6Cfr?J+T+yPgfdRTh$ zN7rKmJPWqX4-^JKfpg*j3eYn?KrRIKMgFQ4$Ovs}a*;prhjiKd-jcpWUhz@p$iV*5 zw=$W!Id`fbG}gQ3vQeiBu1kF`{xenAIj-YAvEKpzey@HGpPly%{9^|e_J2?8|LxKL z;{TcS-;0N(3HZo=K|Id=6PQOG(kE5yXq-X0Hv()ZPe+@|M@Oec2oUg%u zYFtM6Td1FP+5m+=m-Y^OEgxI>K1yeKuoBO0Cjs3A5cE&!~Jv~EA_}$m;n-*dh z=r_C!yTCOd*;n9xT$7ncH-WuGVgAFf}^_z%2NFKsx<@n6QYW4HQ}DsmuWyc+-7 zdz`P>0Q{D9NHzYQi@E059fAKP>F3`W8T$Xu5xWzcw@12*I6&>28IE;m(|V|hag}kf zi{QmuKhQ1x;Jj|>XJ74}{&ewx^uSfSrN>9@m!6$`NLq$}eR=IcX*vA2ylF3d3A>|1 zhzD%%!}z*;S^{2|gXLB8(J$B!&K<5tHiVB6yCRSE^Eh4^kk4hG!FsXmI6|L8sjoL4 zH+Qbk=^L++-^=UbSyi$`SyYmCOT5!}i3#vvT*E`mC8Q^AJG2`A+W*&<9Zj-3(@fZ}20zCSlg#elg|`zJY)Ar^(MXe4a)hOr+oSN4tK)If;uHe~*7} zxAff$`lSbE9Fm@IKZLo_oztpj>Nf}7PI+U_rHNxRL_O5+A%ppC4d>S4)+!pjn zWiH2h`wZK{cHx>B>(Lggn2UX;c3^tG^>D@&uSpBf>l?8bmTL%dVCYfAQykqpO~g*A zAzr(IIeN!3`u}n)L50u3%eLY_%Ya6B)ipcvXdQTIpsidJKKEUHQ!VW^k@&5v2k)7N zobj6U=uZ}dXY{)9zhXb|59U{^>y-hFjZ6G5CvZR!5r5Sy#ywe1L|jFd0kny-(&u=Tue`_mozHzS z{ObcyhFQg;o_^2?kjMY7iF!KyB8B8O(Q<6`9|wFrTqs8FS=ozKck#1aVw@BQz3U9R~gf_+Il-)BThpZT#*Uj z-Oo~*XAB0{xA2*EPp#MxtOE&q0{m~7(}%e3Zs|$h_w3vQ)1N0EnA$(tBYcn-IW9m> z4SO^GfuqSML%eDYel+LOt*>LD>iK|}7oe_Ler7u=WM!!nEBGieGW!hHW8nAnUSpoz zXP||4k?PQ2u9a_l*Us_&%kYm3f9H|ush{2m23RlT8e!H2W=x2SwdM?S4y}|8F(t_7 zVvmuPY3YN%O6Q+-1UW>IZ`fh3b2nx}8K6uHSx&!Y8$cZpb;L*E@5W?gk|+GFat)sy zM}$4$XZZs1nZYl7?u`G>605W&|KCf&zwPkL?~F+^&g++cens!}@brP{+17*7FE80W zjRWVS;kj|xZ&Qhju7}#N;hbj)Sp@Et15rjk>*or7=bY>Etk>Lk6tW?&BU^}!_|69z zo1Qx`{r2B?Pj_FqdwS%mz0=cU4o*vm`&~BuRcYCbgVGXWdX_NeTv|5}KLl$E@YAnA z4=;xoS3oP_--t_h?-&uylk>BC}!e_y6^1Rpce95&Ck1-$6 z8UOdTkNlAMufaFxJiPrH?NYYS7V%&9v2)AjN@>7v*1%`^S^HR>KbAhY78-#J(7x91 zzUY(KA!AsZ*@S(M-(>@KeZ`h{OfN>GZe{t)I!BBapKYs%>jKw>JjIVn-5jIo>s?XO za_Ya@_CP*F42ENcCfddL5c~(LydOJm1v2FyP2JLSt-El1HT<)Gntm4kLGT}O6O0dB zyQP1y27TPZyk@&{P=2SLfqi*iD%&LU{^szn{*)SMpEfb?JOFLvd}9mkWd0!auw$sH zoUcEX_3NkY%G$DB(iPYNFZ|}a;NG#oYEX~8zs@D={F*P}k*- zC$@6N2?L_PtXr04$|L*CHTqKSNBdPtam40eN#%Mp7 z&qw=VG4{i4AMcia{>5(Tx8K|;-8*z3YmEn_Cnqx(SG#+9p>a2SSi4|H?94p=Adbif z<|9`~_~`XlDJz`Ui#3bLj8%+bWBwAJ4jJLG{2b#9aPM44jQ0aGMJ$42qe|4Q(i?BaFoz<5(X*ws{ux z`{3uKC5j-~Ypfvvrz0yVW_17u8V-<79 zI8WK4j{_cVgg2~f;2GYIc2XXc?IYg@?{~t7GBU8j@A^oTmFiAytJ&BWv(d-K2kCn> z&vzYds_$gdU~GWn@twTmu(a||KLFUS859Q_v9IcP58|)^IPFy6O1`^ZVBLDx881u! z_}!1w*H3+Y$N*z2u05eo?8l)DXnlLJ2F$pGyl%821E_~}6vtvG*Du>aFAe|jMiu@e z|6jy7P&5l4MOUi5i2ZLs1aZ=LESi*RKDl%H&6PW+zfB*Mo^9DRJzTpB@qoJ!D___E z69)H=v5wzfR9n#ug;SaJii_tD1YmRSk320n-60A ze?y1y|J|*_KkS~9o%Mh4E@j^w{yjGn+p+1ie!-v4o11&CR-J{Pf22ASf4aGqt^hkD z`Td@8hoz@kL+LnaLj#z{22adORIs1%OnEJH#9&glB5teD_0G$P;gD_mP|9lyd!d+5 zt;hlDYddITI9Av|8`%z$@tMX@IFC^HR*HA#v6E}O{?>F@`u?SRrHjxb-=Ypf!M^z& zrf{4A>BrWGrXO9s7W^cZ#k>7qQs$=$kCphZqiqWUSDbTB-ng9h!N?bN5PYiNtdZw< zo$EVioDTlqOwOuzzA7#K#YvVWQ>axF(Zx>(G$&lZ$kfRQ+QOq zHgJp_AheBn|K=0BqW|HiU+SKIeL>Ikm*IobBja|97~tiz4ooZO9)NAj*rIJ$)+OVY zbp8U{;RV(&zW|<=*Y%88!IiE3neW85#`h4m0e*kuAXb8}hZ+yT|G%(<|Nk#-BR{ec z{~cwX_09Ek+#6&4k{_p|r;Hh@g-@LesOP+SR~>VWI)>OY{p#qKneXqG{#N(;STDJ5 z*6wLdy|xK9KYn@fXKYj0^jY6$ojgyUKlse^d!AR$VXx~Ch&fl}L-++|=bEPScdzpvuFd%%3i+cQ!Eefj^8G7k4@{3Y?49nK@R~I7Ok#-e2{?vv?b>L@ z1CzkNZJ^%F>kw@#`9Ew++9Pk!UAGqOM6Zn_(p=b-V^KA7^<7xB(bA!ew zO@nV584rwlE3v)reskLJ=U*_*XG%x#kH>E*K7rLG-q)=|`NtmuLB;C9BtxEN&fwWQ zZcXQ(bRg>nd!-A>ojv^cKEy<_moe)EjDa$bnK7DK=T&fQnf#6V#X0Lo-L{1PY!8Wl z+e!SJZ%_Nb%lbdOo6n~^Z@C)(f46i8@&Aua?Ui0&&Th%PUg;TpO8@=UzUdllH}O9n zd`_V*weYjD+O@ECj8_X8kmW#mq>S2R!S~eBF>#Pss9?Xa+j74v`^{@mO}Ra)=S<`c z#~RM}=<~Jx!uJ4vv`uU)+txT#?LLpbTia#syO9r!FMjr=0qJ+&+BMyGbmw>rep=Ex zApLFPq3j7%i~-EsGm+1Ar-M<(tcAa-z`M4Wx<8JTF>u=%|Fpl@&m_;!K;d^!caIPK(q5liE`oJHsLOn;qz2>50m6&&lUOAA?3-Nff+Z1IeF$Lz|1l9qwz zWypke3$YK-_p89->K3stu8rX&=7CtowZ?cg>`Lwy<_w*CA;xh-#0xN{P-gJFicO#l z0Q>qtVokW;C2fZ4&&q^|6ZaX!9$>4iYs9u9p89Vy4onGIEh@>Ap@va@MkW2d928Vvh0C>F=YLr&iGfac)r-1r^klj_=UD# z{}car!wA;@c29R)+aLTpC+C_Oc!nGws~QeXKlnU3e(5iBbB&|jjH{^S7=1w5l}m+= z>v+t47xu5XKdlpS&b|-_nS7R?L)O6qVq8A3-pbNCu#(C4Xg`zrGO*({>Uw|kx@be% zQonkvRmIM%hsUIx2dtIY?XVGfPWbA0Z#&O0pP+ta! z{a^pi`ro~)v;Mbl^SC71rtDMwUSa>2?Plz{Yxdmt)|_?|P9O&rN8|Yxe}?(>`Xka) zGl;it24f4+uNiN%&8blMDq^mq^vyXI(C@hd-<-6Zd4Z+O*)1W?$-GRfoA)Gl+kR=~ z4B~?(?Ux=Oy-#{{M19^~r zsWCsO9iTj*T%ND^1B??78Bp2;*bUB6JUO#}x_{CEF`jW9l68&sh0dcfw=7=t2PpSr z98mJsmhc~Xm9`AI9&O6K@J-yycVmPa7%$F!N8ivDwzoPX_K(3A(8!wZsl+G^f7>2u z^hb|P8y>n7{NoE?USPdBLvjACs~!UwC&c`qwm|d z(VE0*X}d6gJdnOaZa1+Gs1E(doUXb0%%`Qic1>v`c~R7(Q8sXr%b1T9?3ZOP z@SJhI@o1f-@Y9ypR^Mx1`Ma`EjJsw;nUIghDY;Ks*!jwfQ;Xcl;@>v6oD~9NjgWRr zJ^mqc0XE~ebv`=A3t-lLqMP7D^DBi+qD&E|&iR((`!c7|FO55G{|9Nf?$!AJbK~%j zcE*3mfU<7NB&nHqHN)fn7V;mv#kiPBjP*yuhpyYv&)?1%<0x@UkSK0v6XlL`f zItC0IfcA3?U7=F0s!yF?(l4aER@T~wUZ<}wQ|mjhr+BvhBG+EerT>jXw0|83)WJ)R zKPM66GUBL#Y5K=bN$Igaqt}%I>%teP$sY@a*YU|byPRDGxo*(>LQ7x3e`w6Wnx*N1 zTieqY-?CTw#+&-$J4dE7f1^!j{wVn|=S`^aLsfmOlfMVaFVsc8&v@{A*8k>Y*lztF z3nEv=`oGcV_DVk)(HH;UfQT7Q_-^&-tZgD*kF_D~AHfEo9gRO3OP;-Y=JL$H6!tac z%6*WJao#?mP8&%(sGwX=`!HX-rDNcvYzO;S-P}l@*YSRHA)B8``RRMq|KS(#dPv*f z`$LX!y~m6_?}_mWa-$CYF4@MG%^ZO>e6Ixy`sC~JwbZ=1Z<@k7kfF!z^GG%J{rra( z@y{G7IwhXrbLhkTt~eL?FV^$q^NsZ5Oy7FbZ84$ z@+h{MqcC;iyD=sf z|D0Fvy4RNE{w?BAnP3cP(;37VB9rbKG9bM${Q$-b`$ues{?KA>5W7I!`|gZ?<$`*j z_<*z!`=E_^mpbQKcg4RlAU!&M_cWF^G8rD#Lj&o&Ewsp6T; zZ_%Dy6LO-&e?78Ho8Nt#yw057vykmgw7LGq>8HD=74?I(1#7Y2MjW+k8vDT$7#80T z%wJ%SVX-ab`6mQ{@xg1*nk%sqR;Cw79$;#*^(&Ych}fa!>HhDur_aA}&-C>-4ItkX zdzcajZEh9w(>lIU_SCC$I5tbvD`O?Kg~1V?NV6{p9LC=$vAmTM^$SuhD1l(p@7DOP9f$#siGO$2pC@Qg0SA zcq9JRZK2=F`c>B_`qcB##`+g>ywb1sEu?J`_C>}q?I7;;_bJ=8GxYVj#?*0qwx2St zGS0(}_a5%|zGzGC^LrjI#27@Zg9$&+;QDDC-Ro?+@8G=qPE0#`K$>!NU)F-|_Anf= zQ?(5EL(5ek9dROYuFQ?-Zxl27M+?GFp>0B4ET8pihAf+TI$T#i5?fJ!pKEs?nSN;G zMvVMvvmHOv56>$KsVpO}Mu`sG)5PftyKUFh;9_(j*SJ}lOZ>sy#b zUbmQ+w2bI|<{H*Xlr!QjkPq6Ht66LI$1C@UTubgd<$9)3VALE2^|WQZxfik1LKZ2H zm8XFjc!X=5Cysuts#AQgu2=avWCz#DTVl<+`n>7zjy`qQ5Y3?Nr}Ey*iSM0w&dDh~ z^+z!M3|)<#4^(1(V2A=@tF5{p1Kl6W%Keu=K>4@I=XNvs45$~z*r;$En&BxN_LsQEKc_(e; zeDoOn8#AewW9hI1EGOlw<9i)r*xD0`y{7NfD`F~B*87?7a^1If^jd%4+%Z3=t4HlA z`60`dnP7c7G!@)TD{r^gX_udr$@T&5Hvc|kN^`AkUTgZFs zP?ES8|6*%A$C2RQan+TKhwr>}_ZWk%pAC-G?afewIP!b3t}@m}HE~WEfPP)Y?`y&S ziiX|N>ZT*G*V(TH`@M!|n-fGCBcCgi!am}2#({P3ETb!Z1lGhx_*-~}ZR|6qqf_nI z*~o!=hVRAv$o}MhCtv(5@-Q{vH=1eLD6g`MI*5Di07*YVjyGD@NWST*d#0N|-y>b} zdiaVqz8ZVLe9be+yVZ0ed0%ZqMt7<=LdWp_jQ_6oz4fl4?e%53wpxrev#w_> z^AZsXcxC z$U*5#M-sn5+_SRX{qn-cfeqbu3j4)7CZI0W{GItEWSqZ2@``P*T`K;4PR9SV4*2Kg zRroK;8-*@p6hC&rKXUB$8%9R{ub-3u?+NmMndjd)`|$m$cZi=^$(p}kU*40sjbh$L zeKqAc^5nwb>R)wh@CW*TCitI$EnG7geaLxjO(|pmZ65qZox0p_JMi8L{%KorDSp-a zQzYUJCTo*2?jOZCF7In}{nuZIoA@`oROA15=>K7*{&&5Ua!~nat_b_Bx~>_6uHhO* zdm7g-_GdHqu(aiM#37JVy;XfrABcbLelQekACw7>;lUy`Mrw7i1-M<8P94$F6zfE_Jl6{ z1poC};scpGHRqaZ1jARsnt~M#g}&Dp5OJ4aKky$i0C~VzVM*&A>As2krz!71u98#0 zy(X2l&V?v9V@zTl;CXHK@Y^T@=qvFdW~2Ok-{vFtnpesAOYx_SoX)xFr{TLhfgJP4 z?3|j<|1kc5KLH^1>)Nz>Ex5-A==@+|V;6ch#{c5ZxM7ouMbO|s(l4%`p3ZseZt2TM z;OB&ow3}T6;a-Lz(|BK&%eHBC9ju#V+3XvyQy)Nr)pdQPKId2i->={pHdKemqe*f4me;8E(P-VgjUUMuUW4Dfx{zm|40Z;$a}wx@Zt?i+b{ ztdUyV28No!x4u1XF!16U>6OR>aU}kYNi-IBIdNK#&ls2<9GR`n7n6F&gFq z4E&2(C}JV_t%)&QgJfTn{Ixm!$2rRn#axA-#U0ObTrq?4yVmZek913a9fvJ|&tfI( z!dD=d){_S!;*9YN8e1KCTB7{afn!nr{^<$k8Sc1z?{qmba40fh%+dXVzx7W<`K<$G zjIlFqT8teTXIU1@-c{m$=ZET$zkxmKGnvoEW6U_UUoxNDf4shTntjnH84KJ4R`3OY znbr9Hod(=!3#jlp;h!hXBcOe)%wSKFJFlxr=NvJB+(|t1jXl$N#(Bm)xR+ku$4Xy| zd=gaFM}DcszkTX>Qk!TpzEbU_b6(qfoAJMnvWER1#>#W)_M1ke$=Lty|M4{VkC?J% zb&Rnf%rn(vV=|ZgeA}MsHezng17{4Ue!ywuL$U1gnB!-09(E`A2{}Mr0{7IV8vhj; zz`b4WzpnOsd7phA`lT$Re61ZLubby(0zToqu%;1w#M<3rt!>P$ zX+PsjcRv>G0AqNUH}oby*+J=luGl5UEOoSh#1Wbwhp!JlO=;hEM~rS=ao?}?tg_RRw#)@%|yrT-;t7wZ83=Y6GZ*C@OE zvpvLfoI{!pH4xXLk7F8jso}eESnlcgZR~)CZ+!%t@7@B_Bn@`TPc^?TK6Avj4zI&Ek=ljMnf9qcBjx`>cKrSxk)?%)&N&SfKM~CX?Q|GS*OY6bEIa5|~F3o1` z6MG~4?-hIFQ=%S}-F*?Kfz64GGygyK&I8WQs?7iNl14%xA+&@NsuU^ycNGNd+7?AD zV4-&cq>x@GlSwAMmzgw@NL3N+sC30u#I-Cdf`Eu3HKb=!&;R><-g_oD!wexA5M9WJ z!+Ynw_rCYE-_xJxXm^->TC2Eb9VFvi+~k(mrG6bs`^>!-`^|Oab+!?NPmcb|`}N1p zU=N2*4$YC)EF!k&nW-JpVroV$o>#)ZxDS1%gnxOz_-9Ym(bkY-yqJ8UKaM;gjU>)w z@Daqe5)(9zak;P58|mkUjQ=>>E%(#;-Nxqno42byeJXTL+NOP2dS*_(K4xPRN1xi7 z`d`$6RSsDEBoHqQ0gCvtd!=Y|gI29yja;As02(0w&u5OT(KoO>-8Xl9y7-tqQ_o{| ziMUSf9QpZ)I)))9^{=Kf|zBP#I=5yhg5#IbQ1FQ4glX`=>)ca+6n0 zbbdNLezj2%#(N%#jB&muQ#_95xkv)ZNs z%(-=oN6{z!Fj)>31KI-RmG;dTRM#^4yA4;@e;{VTQj}PA=Ey4e%z2Er1 zsMp1w^9(Tk0c)`BEScXS{egJ-X&=H?gC07z@^bu#Z=i&Okkv}#a4hBc z-`4eO?)ThB6WH66Xznd(mHuMS!l)weZUp0VKmY97me9R@IiHMud-Lw;&$IW34{VE0D%;$L0Q^JKttE4-V*+U zR)Z03m10D^EB}WMz_`psn?VkkXC!G4R=%0a{coI2Er8k%oc*>NdVWF6!k-bZu?HF- z#NG+GC2M#%+sBuEyskI)l=VCne5421Bit*^Ky>`jw>;dsV4cDi}c{eY?TV;b=R=67Af8G(!Xo{#+Z9N^X-KnxIZL1JF~%TY}oHhM_sbxsUHA_tc&283a*di)vq0PWX78LrZs;8H_-7Z@Z9F| z|AJDjN)HhKH|c!&KXqipzx<#5rp&qV){?x59Uzetx41?caA5lSm!QwcXmM^9HJ@p*P&#((5UFc+SqqYSHU$=H7JZ_HaI^yU7`Tcnq# zcEm@9-$hvqo|tY#?h3p^bLaB+P0$AY>G;%E%^?SIL8tW1&+|N+x20H+9k#$bu`Ovr=yKOxb`yGAe{_E~* zBV%#>r6q+tQOIoWRpUQHZe@I)`R7@%?q_3p2NBQHS3;f3p9-piBI?FC;iI-+xJX5BMv-HL>H{)3kWl;UY z?l*a$cINOkF{jSqrm+fN}wO`M9=$(p%rBH!!<&T6`g`X>5Xtt~v>XMqXFBt4B-2Ie&6 z7RR-P{%z@f#~*WGOd!8A9X@QcE`xJtu6ZrvGEQH5F&aA8=Qz%p{=k0e_KHgiIUu3m z*I65=;Qy<@nqq&X2@8Db0e(Yq7w3;j2VQtCeXDwCI``0BQ@5_fKA}5~;JmTX)J&{7 zb+@1aHS|sVJ67qmv|d^jHYEC|{jWLr4;uw>4L@8sGF5$Ux2X5=_lefIF6unQnSb&l zTi~C3G2UCfpmqBDwD#$ibFho!uNnF7LI?2N75k>{8FGyJCb~fl^I1cGXS&Z^Gg{2M zbKY?M{7l1p&G=inwfuShz3Co(qHoi%^G(Cft4wab{Xq8abY$zNChUzZp7X`DT@$b7 znMl?G_;c-nDLw!FL(294UlIRX@PFdgpheO@@t@aD89?2CEH+bpiq`X+^9kc&JE0Tf z?}s0nPou77Es{bOFy=>jjNixhvJo5EE5!2}+oQ}n0a_*YLmp>b1>XnztV4nSV*hA+ z)FzvC5ciRFE5qjG_e*oK^;h;H`7>cZ1Cz>s#!twjrg28lbmsETFQV5^-VgsDu|dlI zS>{(Bh*)LtZ;T20rZ%S~oGbt5Y5S+KJgWkpsC-$R$&B6Ge#!^=t++D3Ti@qRN_K6vT(M0B80>}$_g=zntC^!a}cO~x*%?@U@6K5+R_@T39{F&^odbKb1ISFB_3zRUv~xk|JBOs4a` z&iCa1){2;D|G~a-jn=CheL8XO)C^fcoO;ATm-c57i?d_;OHF6i{EkC6!$0{y_4sFB zDVMrt@>^q9JTp%{BWw%M7vo&-BFA{WHN4pS)<2HgIz_DP#xKwOTF;z0kLF5D zrRhu2$2prCTeG44^T5pSdlQ#lVg(9d&IwToBo0c)PR0N@Q?g|N6o18 zCE_oC(zi=`dLlJ%Sc|pDWZIjw`xp4dT^rJf{MoRlBA4h(HSWax=E2CD_w;F# zmMx;T<{bB_zANZo$gBRnWBTi?E{)=Up!osNzThY9PvvW4NtD^9W3!z=yo5Qf+D)q1 zOOI9WhipupWA=TVb&L&6nadXEn<8(lvk%ljHfQFgDIFp=PdPs3oA_Acuj+Xqzm@5$ z*!Ok4Y!AK3G_d?y$VSRY4IAIxlH3K2pMl+f8sjp~b2|99K1|4e$g{IfYLTX}k8k@N z_Whdus876W>nuLwUJLy3+J3}*vCqey+&W!%T$}Xc zseRGwu?G-OyK$Yh!~wVY!CpftFJ7<1MqtcR8dv;o=*adV&%bjIR-=`zL(m5P z&U3l>HRJ0wt|8;KMAt9;CdPg!o5vcT1P?e7KNWMVPVm1Y+ff_1UDOjbh9P_bL07T+ zF=l-n(go`ft>8SFKaV{i=%jI1=DCh7;a{EDe17Ge(AS&ne^cYybU*9(;@|z~-Uz%k zc;+<5;2cM8q;djlFq!@0e5xx9BX8;26Zc3zn_Gc9{Ymg{jnG2z&w79G{u1+Fhb=&# zVI6c~9r<^>LUedGP3wMc`r<*mrEb&_>VFjHjiQ(8TaP~R`|4}%FV|c-Tl;^r^?%|O zZm$`W&H(>|p{Y+!;Oq`+!EC?>kmkYnUynMK)qmUyiUf>qpiFe z{7fW2ZZdIj$|>rD+J&T>(yqW>i3V)G*EX%m*51!}ZtCi~HTItSQXSg5X4cp;_ioXd z)Uck@InMs{45OfT;$A#5Uh8Ff{fqklvhN*Mj{pBg{tx_zOu|^f{v;b?k2S+LHj#a7 zZNJg9o4!QN{Mv(p|BG>TE&bu@TVWeh?yznj_JHNk-WSQ4zv=VPEBZSQerv59c|qtE z>K5)@=h;?1=Zs$&A-9m#p+R9Y;Ir{}$Pgttp3m2R#?QTGlde%4{yjTx5F_%)h!p@M zQ}O#K3+Y?eH}u`h@N;tZ!%A|3!nR3W;ll2ZPQaY17X+VK$T>sA55B~{nuVRi`m=+f zFV&3CJ*6#fj=zQ7MmwE0&!WG%-`jH44p7(vvOU20DeNTBPIP{GMc5&YzbnmWtO4;6 zqo4yL@eN)>Ebe1BPoX^Uvz#Nalq$g+(^8sV!uS_4!N>vd+?A`Ag`TjS_v1V=Y6qkx ze@)XbKPz4JuC~;CY?%fllN%$Zte?+ZpN5X&`EQfS9jw6a-faAn-~6397RIJR#2zj&7?Mm!As&sd8M{x?>R4;!Bv zef>6BrrFf*hU0kczcarNA0Pcxw$M)P*rna$_EeF>QZeO7;~b#PpharA2% z^ll_If37}!_w?U4OaS9A;}uvL%``psm=eD*3(h4<*+w{C}KPiuEB%l<-@HZ@>7z zuD|$w`w;Jx<^NOn_=gLoq>t^hUFr`0=beH6HLGh{&ACn?gMxqSyhfY`d@AD7#6LE{ z)#z$3p}#)Oc^&$*v}=!`uCj4+(*59nnGd=@>3^&jd$HJq<@@cm*J(@Zo1fbluh08h zx*gbOPij}L0E@jC^B~st&y%QWF~5EI`Ly}1s&&j+2EaDg5dSaTc4RsJt^YUlgqDR& z&fd{(Q}AQxH?pg8oUuRJvxf1T%C}2v@QqPtMZGt8AHT6#oE)@A+Tb~?5ASYDtEr93JICSWU?%vg+F z6we`JmF6?g>(*TTY_=mreU6ih_=(K3T+hku7yVN;*m9;bHfeyiir&ZU$h?|E%^79G z+EE{`Z4v9Nj4$tn|9ke>n%RuiTD#y-SxDXdDbN2}{@r(NhW~k^KR1;6QO5SVKa_Eb z-!E)e`fH@$mEgaM-~Ia}>WLy_nFA~SV_xg$w=~brKQh+x+P%`Z&fhs|1ZaZ}|2q5M zbEooNe5F1 zb?m?24rmo|SmM9Xg`qLbt+J##mGhbL|5lA(pKioov91%@`!h}_c7YhMD^F^d9=>HV zpyPaz$OQ(J(0~m9)S7~8LB2FVRLZ4uz45jB4c3Fp=l_yMUvy?Vrz`OR*aLgLdwcXC z>^|?OMv-w5)Gi;6zfkgo=`I2!P?pOX^H?Jiz!3W3LkDgO8g!QtfqCQk@ zO!C2c{KF5XVAlvb&OQ+%%~`v8{3{C@$D^F<9x459T%pn7=T~orXP9H&4;s`RAMTx3 z?w($n)d3kB|GIjPV@0mfCaphuqxEaiNwXc$oTw*f9YFl=jmI{I|8c}Sg|5i&``hxY zV(jp3`XT)`*4-L)78pA!GpH~IcW#5K&>JMbU&zPzWzzjKaUshw$^bqnzUJYKbT$Y?{z zm-}bMzqZ(@RX{yF@<<#%CT$qrUplbk4y$rtahn4Fp%#h?@)zP>vjUy!n5`)|TOabrblP%J@sK z!vBU<>DzNArB8R-A@zP2G0x!M8sC2!%^4Zgp0s9T#((Td=`<~5IO|WbPgm7)X27DO z)9kb86SD2lW48~xMbPFF4%LG_hjq$HyGJc8>4N^L=HlPqQ0|ltWSP^yvn@=l%%mRt zIQHK-Yy?B7-{V<&{kYz6_V)1MgOPJMtC%sVf9r>i^X;H}QDf^S;&Nwl-}*b)L(R>9 zd}bH$|C7z||6An$!6&qe*xrWt5B(qPTkB37O#6tj@m+{3Zh>4;hX43|`ygLL7KTr* zr}oO?X&r-RjN%!d$11NCyW1-NzY)04&)6dVv3rcg4ru*^ubm10i3cuf0We1Co!Iw^ zEE#qs_EY4Za0b;g)CIBT{7`H(#+O8GboUcYU9w#M&;9vFUnhqQ=H6!iolgD}duudn zH0wiqr|XW~G4(m6b9&_VIUuj7DZFBx5C_b?RL``AeTBSVC{pbFW zMxK3oy7b81({-FT*oWMxN^O7Gu6h$I_?1KOH}yJ?&-!`3&vQfm_tE}F{I8+>?`=PT zMgU#Xrg`|^vj^!-ycn*K7U%e z7+YU2cyvGHA#K*$>(4m^A4nPg)&D6;nqgo6!l&DcSVV90L1_Rn2)ETtPM_Tmo_H*J z8nUrEyY=1vHlFi%iS;ucHF%-=Xy6~Y6#f+TDUppgaJJqn=n5~-KOimmG&TV84kNtVQ`ak$rAK0K=dJ8<-n5P+SsLyd|y0dqem(ue;=~yoR z|4-n*B{BWjJ{rNlwtDTwBUm?Mrk2dv7kdLTg)vp(>nrwu_yNI2oWaTaYpA{d%$Sbx zJ!@r8La&;HZAI*x`xjT9t<3ROH21wtx+H%t;vLxk^vyUR^Qo+#WIm;F32WvZ82AsL zpLCU0=sH{(w@u!%ihRfyhyykUSo|CBDE>pA^!K!<@?7t|7320dr^svAPx?Ug$3!d% zdriBRxrD|(dERJma{MklnL20p-wg1K4M6S>Fake#zIg!!9>pazfW)EYBo7GVH7n%n z(12$jO(Q;gN;>b*ov2ONB6UO0xB@x*a|dI8=y@LBQ)fWW=ll8q3btSWB7UwuCYjF^ zzlU6aZSszJGt-&izc+l*^Cy%s&EdN5iaqd!@10h8KD;(6Wi%UlskVT~;e=mG2cnkC z!glFb{i)-0cp;-`2QbIQyr67H%`%(oC=GCrG-v(9TC4@n$vi)v$$lJc@v*iCB!9UnAEsj>6893&&RI9mu3Fridy6zc)e$?I?l)q=2}k!SOeou zS5a%`#Tomj(eDTUjJ3djAy>ruHWUA@M|1XF>^Yt>5sX_4U!RO)_6#$5nz8#e@HhR; z((NIfGj!!id#AtMe;Zo|8o&WU>(;Ih3*d@UT=4oe5QS3B5V5+7|B2wV7MtKYzVpK4 zsmDi-Nnavg;F=R#rSp#1F@5@A?CCu&;6nxe1M&5+&oB5o&kOu}i)QYhPhX2o;N?gWY_#%2alt-y4aI)Q2H<5S@v1LOKPb)k zFyjSp1CGXCfgGgVD^5daV{YUZuAw!Tq@B%Khu8}|r=AaGnu4!=?1?R?SH64d!*~Yp znO?|cKj=n37aoXzQ@#t%l{?*wjK@0m#kscJFY$kCQ>)*e0Qq8j~7-v&PaT@ot`zI(#KQG38{>W-e-&fOBb` z_T-Fzd5f>H35b7VfW&_V&ubNM;txJk!v8va5jW2om(K3Idm6wQ zro*v|O{IpN`)dsA_M5?b#hGAroHrHvnQK(SzqKeLR+U;6+Q-*}lhyP0Pxp0i9kpBs z9)s+Su4;|T@PA{o84m`O5yfqDv7gsQY-wAU&P;IMdByHz9m)RKNPDv;-SJJ{d;u{& z#N4cu@8=qu;-7se&cpr}I*$4c`xBZL{!QY67SHUQZbojO$XZvPa^T|h)Kj~a^Z#EH z|1;o(7UBC;=TQf>e;NPsYx(~uS}pqjvibX^sP|LG{{#PGzYPDYIWzC+ar;D!b<|xa z*V5W#KHstCy_VzFw>0f#%Cq91Wl1?=|zWx3W*No)hvv z^$vm#yB6SISyTMKFnzyNjUH;vY4JbhJ=<+mZZx(+`Cq%vTPgoL_py(;MvO4L&bl1( zI`@EcV_%)WDfD0e_jSkYn);l6aQf>{zX@K|1*jW_!Oon3z(1D_$OXQZBuE3I`M&rj zqG;Kpzf6~&er)=9=T_;IeL25W{09}mh6q0o**=Po`1wMH5c~DFcrE^|O0WjK;Tv-% zrnC0lISo9D`lRG-x`xK6E4R=2IJ|G(QR$^x@IY=_*l1^$FvH){fbg417tmwti0?3# zW-N5u^FoFq2UtThYTXdCI*w;rE66z5iEqIAg`G{h%Up+?fsG+@>=}n~( z=ANI8J!6jf=+di#W(6&i$3wrO7L|5><$bX49$hhS7vj+mNZ&de8Y71BVGMrXej0N( zJO9u4-@re01RCOB`F}incr1Oi*8dFTs^!>9R*_R3wK1hR{FW`_LjLbrTC3-^PS1?r zJ5};MxrzfI|sMuMNL|I6cpr}9j3Z(QtKjsHB>z`y?GJP*ix?gQz* z_5kaNXty2n@2%iREmO}Ac1h1Zh#X+9ka6W@o;5o}nie=t}XrjG>dkN*I*wa4t2o}b#1 zeiCy7|Ec%6GmeOBxP`nX?@QY_%f_>Em(3*~4L*JMl{_0elsQ7yYN~wyLE^t;KF89u|BpY7XU{t*cwFG$xy$%>|J$HX+6VLzct*yA5290{$2gDU zh+WjjWZkmBpqP8B8ha#YP~P|SL%tzz^uBRFo_nGH&)T3X=X7AK+KdYP2mf~u#oj9B zVI6$Lvr3;H-vQeVwp+eyyr%dMeb3)yj>Esib(_ZSekt{_IalS`7_Vy%?>Dw(GPvMAL5qS_Ybax{O=hCOVc;! zj!U2INSxu}t;o3~){6dG+eiG5VeW7JEHc2t1F!|MX4v~8FGc*bZv+3z&-w*w!4f*{ z3gT%0IPSn$yMf@Z3csQ{z!;uquAO<-@(SbFUB_*nf4-}IU;nzg=6L3JJi3;0$1rer z9X8Tx*5_A!iR-<-Gx0pTC++)@UqkGIv8Vd@3jd~O=Aq+QZ)4#u#6ZLQ7w(-N>f4%U z7B-ymrzjs0%W_(mW$DEiTQ`P(WgW-k{&&sYqfr})zm5AJ4i=o-S7vo7;(yGkD#O38 z!}kyVtu<1IjG(Px&RLAf@3Vg*j+k{Zo*~Pb+dPN#r8(ct```6+&)c5@55;q{Lf<}_6*vg+@t?L@Z`MOXMQK*;hWk2 z=8WC%I#!$gQ6~}mxj84solM3zV9uBPX*_a(xpI?E#V>Hwj%o0Rk4?)Sx(i$qC#Vf? zeL)8T$buFaM@%4B{)*=L0~@s!BEvuOiwDxU;RAVx57d9w*M3?FzZCaV{8`{X9;?^E z_`_xCjuQU+fdAphm*U=a3%s&lwKEyJy#yJ+c!0nUG27+^gbl~F%ejH<+hw)8q!;HL zkiLFCb~o_vnOXX;gQl>D<%i-neB;d9wyuGDZ4@%q1mfyLzGjZcQ+vX5O8c;9j79v( zRm76d>5}SZfopQlqP9NzrZ#5jmuJ(dZ`aMj=7;W*IOkeAu!4Bt$H%lwGe3;%>i$EA z9ZSCb7~&U3oPOZ)SK+^A#ODXSn;JskUplYtTRVh(G)Jen!Q$y{OfbKb^hLn?*;zlr5XRob?N}Y z?^x?28_jYwD?0lUep@(-twhOc@H{3&7r!wy0mNs^n?2w%r^r2 zYu2uMHU6{w4<#w^zasMgKD!V3M#%rez`r)CjDKw`)?mBstHcD)?*eb%9lllCtKuFy zus-9T8kWk{((fhU=h3kpgWvThW=Xl%TwCWNFu}fP?%wtLp4ApU2IBjDwr7)!U_bUc za=Y}c3q2p>KzO+^y!bFeKC#d67iAf6uT4Wg#ztb86MbGiowIeZxjj2|-!%Wz$S&+Z z>vj4Yz8*(B`^fiqS=kW(zpthKXG8p#_Jw(dF=qOz56}32W82L)T3e2PabYZgGFI3j z`5Rujj68vdhVM(xLWzE`f5t&wzHs-D_l!v$#X62Xb&u5J_}$aMj~tfP|Nbs;3;z#YfD2fT z8lv2l*Jt~HHAI5F$9;5o^a0s>`1kmZdcfK>E4f$HBGO_|FaOu$U&#RekNxj^vnQs{ z693S)aU474BHyYipDcrlvSPWiPtb1&Uhuh70coR}D8>!GxshZjD!XC|X#Q==r# zrM*#KTe0uNe(XE=tulad4A$UVGs}FxcKG@_q&v=o??dU~<3SuKYJK^q2iJK-CKJX763f>?12m96=%lK!0my!?n z*p$QYI~4d=o~kAe$htVzj+Y<4RZaYB(+xid__sgSDA2a6ouY!iYPXp41#+I|dPbmr zSJ%P)!`_McFUBwam4~$budJos!DksSYcQBO7yskXt;_KreDw_(do$*cv1)&E%=Smw z*`}Q<8vPgVqnU%r?;|&aSjaKFwyC$qo@LH@F~(sZKQ^s@nfR{OD$iMX(n)MU4$oRV+|B417|NDYxQGew7HIu+UIR?}q93=jU zYf@HGuL)l^uie9UUP}FM;`4H#=Ej#$g6S?$_#p36!wX6(>|gUR9G`*F78 z@zlL%KD2|IGwroG`&K%lopK~G{{6v~{83-AKBp(gkzY5zBRRJ8=ayZ<-jr?z=j^vN zbGV1kQtTUR?m1`5pvEz;Vc-4Y8uSYKDIN5T^(yxD7}jXkDb)8O=d$ADeKEvrj{k>e zjr!t%GX5`JQzwxZ1pViE<5};Bi)1dp`2}!IZDDPE+3y#&FnPZ|!4eIyHkfe$&(+{B;sFr zM?b|V_LBOF_PZbU*gd^4f8WR%5BcBo&8&OKyyqHo@(=T&me*1fecFDh=7WWXd3=gZJ3C z%5&%fArF8nYdNl**M@VT4o?&DcMX&e;QLhmF-}_iYYz+l#kG8Y`8w*{aKEv=o%`e* zk44|_haA-(j9$mpx~#t+W^6tA{Ivz%BbEm{pY;lY&m#Y?R)>i*Hn0PtuNaH7VNr+l zn;zs-AnVw-5$JFu;Iq}#d8>wAkB7!gqsD*rshyeX&GG-s*`vPLhqz3A59&+G!MX3D zAC|@#^smG-pPhJk5d#c8t&@g^9Dp5yII2`D9Z*)buR9W7-68#cbf-8M#~P(W>5KK> zf<8g7$LIqUr^qRjXx8HJ3~lSgOa_|`u^adEd%oYGiD&n9-1kZ|@7Q>@X#AFboAT#M z>$FW+uVVNy$U4XEk_OP%5y&lnntVWdu@)N)yg~d&j5YPuta)14KNzq0=e&^R)Rla! zqEpBf>W%twJtwiyukrWLH^&;|ba5>;z+eeLab3v+E*WeS#bWtxT?<=nEDfz8+mE^&r;pfuQytj=V z(3hs2Vi5Pc!(*<4u4o^-s~cyP&+S6IzWpouWZ#VK(Z{dsAGu5X9d%96V>V#ZSXtXK z{kf_W=fA^O(O0xhdajXp9>aW$XAfGtzu{SUwnzDL->*59;ak%MTTJ$I43--J9O{@2afe#0tqkDi}%V46rgMnA@B zt->M4ay~J1ZzOvu<0JMc&$d>L=WuhozhG5_D{>5JS#@s3|jzE^}$sQW^xsy|R z=6669?k$+vagi#_%g_Ue99)ZxAe1xy{h0r>>}C9m^4z2c#lMVyC4&{|oAbuj<9`G( zipH3Wf9F^kU7jsJ6tfFIK@8pGgQ;6DZ-T#O{6o_>$3K7b-dgg9o|(K?n)V;q;-rYrEEVCtl3$cHd>*;vOrERY5qs}9mYE8y{+OL$}#%cL%zoM zRKmY?!Uv202L8Wa&l!GpIsQExIq)y;hD18T00hn|iFbLKl(f55qs?kIce zgNS+MH>CsOLz+ICISaZUoRN;3i?8b%fBzS5G z|G7`@(YFlq%uREDTV62=>}ww!i*H~UudCR9*B~p8|MF=m{q29iXdO0v>IV=IXq@nR z;)9D=A8}m%&%bSjU7(x}i2Y0-;xl1Dl&Gvsx6K}xKCvJ9gvkHa6qCMY{41w>PO)}2 zWmkFEuLlqdGi}S;@ z3BqHQ>4LX7r!?1E8lcV0*iUI=#Q2CIUR!5r5ND~2h5qdSS)Zi7+{^>RSGI0Zaei6g zUpXHhs?Fax#o}Bo*+xRker2d0NKjI!4dsn)3b@fzgOt(9Uem9lTcj4?T7N zHLn-{KF>HEV+YNFGHyrS@BNw&VI!HmFMO{Zeo1T;)cf?jCG9IAn>dfs1MaUvZh471 z3oC9oEX_Rwof^J6_;6wY$pITr&9$+|p-+0IsPq)sWi0vD+U9aRbj&StEYA@;qj=92 zF&>OtU$6MjEwC^CY4TpbD!gzc4aD2rL+OIkSuJ6(U)rWbU+AM=^4WjkF#`_>Jg8=!nJ`vp?M%_UA3d zKl9LB{F^V}nQ##!4c)F{4y%YUt9nn%boG(M51juYa?Sq$dhz8E^Aj>YK#o}6dia;) zUhJ2*;zMG86aIlcdPO)9uo2vW{r^+@?wGDUV%IdB9AIT#@n274spY4hq7UDFvf#7q zTl{LCiI;sDj5&?d5E4Ym%;d8&0L#r{2)X{!RCr_&#>u1z-RF?xr75a%IcmFbHZt2pI=Rj&vC$~ekQ`l-kA zOk+gEf2O06UqKzvwBX=WSEK!bm|yY@>)?;tCgq7iOW~2m1X>4pIkmB$8rLbFF`z4Q z0Q7XEd6x968rzMv7p12me>e{D$v*We-E^+i&*S`2ugrhYcHb*&S?3En%=qK`rL`)? zReX2cDfsyK9r^TN=+K}OTT@4dy@WhA6It=O$;davFh?!b680TijE^zpnjc|5CMIiX z?f&V97Zx!x8UNaN?T0i>I_&;bwkqT+XdnIhS8Q>%8GK*o{pnB5|3 ziG1&Z?b86p*oRgD7L3zT1_<54eMs{+!*0s&TW5U|xYSlCIUx0N>&c}p8-v(L2oTiXYHU;DrIi?zfl|N6SU1Cz%0dfw!4 z_SHz@i5#yn5P^TjyCwWTG;h>7%KxLF5k>A4SOovd;?8B%AM$T#Uf4aHTgGwgXXxv! zuJomK)Wux|M%I6wzGfXj`M-pl4L1@CRAY|S0qOp0J49?%ufx!RpaI4`=vz?#7W>wX zu0|FQygRq_A)0+ah8YX}9Q|(mYP{Bd5SZq3p*wID@9t0eTi7#sZp4B}t9iEeePeRR z!5geeS%KWqpBR60Ev`P4J;L1me#pLQ)oki4XvYxij)T2X*!x|NqQ%*u(7a{XJO4JN zbHrRJb6Te@)`7XQ53YguH+C%ehBP4h`mc$9=U5$W6!RDK8oI3vH4#6d^v*M4N4i=O=y7Uv!fF}aeb*sU)&<4n2S^RIJ0U7fRuO%A5#qa1ZC{%#8=?8PBq%-%Y{wL=S zh=2V!nO}@$9rc0h6No%c`a6Pl^Ov_vFV`NFtWPD+7yEUM;9q*M?)u%+a%zb^UR~s| z^kJ`t4I8|LN zBePEXK4)l0UNTrQpEqhvyU+AhxDW9;rLVO~D{H7PH>^EpbAb!#5c_QeGHnGme`5$D z29j|`92D0H+|&Ly7W-&p{Qnp8hkq&KUwUr5s+bBnmG2hV0h{2)we~mV|HfASu75jn zefC190^8C~@{s}?%E-zpj78i;o)z_0mQLS|n1I95!Y>p#&6hz3yMep@%vB}hi1`GY z;#8~$uMdouWG(KGXB;;DYQ_;L6WC|JBmEa^=BsEkn8LGc{%!4%iNrA3;=EL356_{{ z_u2E<9n&?e%W(SO*=DQebVaUdgN%qRwuJxC3ms#QAMv&F4fck>Pt|uOXf@^n7G}>w<&#SYv2?thxM)JhqkivtF6q zDcyJu{GYM*M1QrOVa9)<6BoQm`7ZVx_)rE=XB~S~emIVU^L%l-znJNaGp%vJvWtu*3)^jWUw?4peeI;6*`0dg~XbQQ8l_^TM>DCn-T z#Rzl_Wt~ay=N|h{xnlzRUHp#*Geb|^?^W@C57&m=A94TVK(~Y}RN7?bv#Cy;+ZAOgGaYEBxso6a}$6D5YoV8_c zjQdm0%=ovj6Y+N{TRCUiAGR9*jQgJl`}T#k5Mx~BFVZ-9uX>GosB~O8z0$|Lj5a>+!6!d`3UEJkofie#C(HMZO%s-nM?9vAHkLIy9}W!3JS{ z-WxcZyq4e7&KG;C)Q6jq0q94>`{Lu@NPOS(oTc%-uR>>`LE_QaGJXB({mK{Wvr|q} zj%Mu4LxF$fGHMsgF9)5r--?F%|1WBWf5{jw@#Y>=2hZ}qm+e-t2qqOZsenxXnD# zk?{RtN3=-&58EZ^`2e1A<9XCpo7tY6Q0m7A=2?5zqo@(X*s%2#Ii#!^xz*Zc&C6O^ zb3l5qN1MnM(cWjibEWbZO&*`+73bEzi~sO@`uD$R3p&hPhknI1Xp{SbR_J5MyX^Pz z=%d~njC|GO*w*Q5*L?*V@E3p_kv$>L>l;uc$Sr(=DES+$9TeDy286&*-oNJ)#|NMm z)Ed8c;mmaQVJ)C9J7d3<_8^}^e@4Mn14KKK3lKANxRFyn=X-XYuXMKNDFM8qk}1L!R+o{6?{-Mw72Uf%DWR$w!en zJ&&M*Sm_?vxx1Ha2gW5oKb6>C?23i`5qu+etii??vApuh((iAiKjzb|fqyO`pLYqd z3wK@!kLOv&tB1{8+Zl3h>?!t@{h7%A(`TpdF5i~diGO{U15fKjQMQ-cl*j-668>)- z_a^)^hdeX(CeO(D5A2ulFHhE%=~=)xe3tx*=?A9`=rJ2gymCEQQKnj(u@4+rqC2%*y79O4z}kl+z`Z(+^u~4dycV07m&eG9!Vcw{ z2gZzFf<9}DrWv=ajlmj3?va7Kwia!_LwP>5rw_E}#tZOKP+Mu`P3TwJTjT+*gZ<|9 zI@UnDU!0{7e1ZIC{IBK&K8tF^-ET&*b_27sbEx z9GG{`8MiI|h9_mc&3tnCk#=MKkb1C$55_Hl*)buL)@rQq^q&VTr2|F&S?7?vVFG}Aie&+uXM zJEM{J>d&n=B z;(uDQV6XJE>sm&A^YFt#Ys7!Zng7$)! ziJ5r?d%$-u+&y*gj32iPa`-VVBcA(OeWcLtfyht;*+bSv7!EBPiS2I`emZHa{dGN+ zGh@!NQ78wRch?tt&;aD4f%v2PK$q3=dr;TuTGqpwO4mVe+%FIGYn5K4j`~Z)g)gU1 z_Fub2)b+>5XPn<^`nyURpkJdz)65lJG4J4X$Ct1p@+@PmlrgpQYHN=9Q#a98Nk0Pj zCH#jB^=4yVpG{N0@mlXS^_>Ry3p%!GpVZ@Dp2S{Lhtm$K-_7%%A|H|%G-<#><$zT$ zAO?{4XUs2g0d*WK9I?RsnRAEg@>v6F3d9TRJd7Mc@&?n|W$B*Uk?Gtcc251FH5JJI zu4mNk(vQqK6!zajca1)wizx%@ldt_Sym$s@S>eA{&ene|ov+8gGC4Y{eqZ;6XW6}g zpWd?p2eE&Ku#c+PYn~hCRe!(hYK)**>q{(&b^CfU2ff&%_xGn3*PKq!7W`()8az{9 zxiw`xtH6C$*vWWLIUr)_+N2k#-TUa6PQ+Gdt1fJZ#^|Z*icQC&KCV9Ic-1}BdB@7D zSqtTovBcMmKrZQf`aUbt6TjM{od5r9&d9Hp<3Gz2n{@7iwufEN{mk$B8S|~Rt2o|i z%*o$I6A!RxpTgJ2xQq)9`JdO))2N*<{!4r{Y@X&@&1gy7{Nd?;haMjC{T2Iem#)P( za24%JaAmue`PN2XLH(J^RjYiZJG zeg5WX{1%wM;h+zB0}Y4P8LHAS|8qz@lyt zujTl92mHTzMfLeZiUINNvh?kd*Q6_n`|HcIwSB8^kD`v1wLt7o_PvM|<&sh2AO5VK z=o#$~_1lB9LiWZlwR6O<2JMgi$@<6n?)chS`#9SkAMZ;u+ohlO=#ct##RkY8k{?wP zzhlj_CX(h=jMw%Lw5i4at(GPu`iEdUxm$~Bp18SvW%%Ny%Ag4 zis^fBwrAHg4*7Bf^Vl1?*z*9iBL()oy4R4y1OMPY+q%QAE*)krNpi%ef282^+935| z8V4^e_N>&{bKKX4sei`x3%bBwR4>bPw3yRPdh@@^-}p$nRtG3|JT`lz zU$YlHh`lI%XRV`7P}q3k&Fl?pg(xE|uGuv`H~sL42O7YBQl}Y?%&(5=xh6Jk*!ua@ z1I-^^^hIJxYPzJwv&|tPZ$$lqX9d=!1J=@)2Jkz^l4uX8!=Jp8n4rbe_fI#`$13pE zpZ#BX5_LM%h3jz%?%7wylLZ}S%-P?heO%k1Hhk^P#s>ucpZf2%<@~=X{D%#d-_e#B z`Ze;lK6>qLHghekxoVz)b~iCx{)*7)!<(%{eW-F6;oj=lntgw6#SH z4SuyH%#ra~kB;n;zIHbH+WVjZVD^#&kpaN6b&;g2=1KQ}{_2bA0nWwxHAilru0%Jx zocF}NSL>&0N4N%AViYpUkFIHxo|t%a`uog7(_+r)TX$oNBG&3=`iK0tR{KTNQ9?$e z|DNe7t#omm^EF z|J;j%kVCaAdDinFXrI39-t4*lv}qrvb_DsntLJfEHv1{+#!z!mA79|#+T{8Gf+rU8 zz#8KGm(6dTUMBwJ&P(Vg7^^;xdf>fFYMv;!M)|a%V#ZFvqwAK zaClJvkpG|9O#c5x&B*f_4P8|d3L=CaQ{D!)~#bEqm zaDV=xw65Ew3&HjUH2?PXCA@zXb7pQ;1^roc4t3PLm(sQ~klLypW4 zwJuo0zW=soy7>4#)1$Y~1?kuV(D#=wUmm=F6>+}G0CkZ>2*az#%;>v`^ zwHEOn1^&}5_-pFYT)S|m!~H-$Nxhi|F=MnK{sNKauef0TeueYGM_5$8|P_V z2=n>%-47wxSpTSTNly*iC#{=>P0$!-`9AX+&ABz^0^eCtE3n}Go?)QvMZ4iT=zzAv z<$P{AIfjd8@0Lud-7S@6_ zvBsjjU~Mfi+Os;RhkNbCzGqGt^I+Dwiu`x$n@g9+zZcyS+7teMbVKox@$WjgMy}7l zI{$ZEStbrOTd07FAYMA60(S9@yt2)DwO9E_gfcDe44U z8^F2&#t5v9GX{|a)+-fY2LSuun_itRKfZm$Y-;Z_*T>pq5wpTRmIhRd1=b|!0>9__ z1payLRT?Dk8qW6~9d_#UZgPVn5>WjrTI=hP}HQp0yEQ;0kp41)tv`bo;9r zLm%jkwCHNi4bkSOkML(b$>o{Lb8Cn*Qtu~**L|lyA!?7yZ*t603H#>rzC3gH^yuie z_4VVeLp%n)Z{3w@o^7sL$n+WiCAlWnfP0QxS;u*C&pB4}jf4N6+G*LV@jvEVWwHLO zqwC^4X;U}eSNg5~W{cm9d-~Do3!e)fhD~Jz=Q$5QmKx0X)%Cwmhwnbc*&mB%QJ3s% z#LzHzVOwGBVPDmU2F_yq&M6oR9t&+W23lLJHusgx&+_@Zk{i_uJ8j$W!Mr?oFRpvz zH{h&y;-Ec`%(iT9r-F{CUQHQa3en zt>)4X?K9N)h+0eJ^{j+0EG7ivnvMl>` zW$hm6cO&;t1HskR;PX;+&r6PKkuHZ8SReU&m-3nE*!qnjE#(@84Uv5vIN;gV^o%$Y z_?@|>=9w+U$N0>|&S}~QjdgU_hOnp0l<$HDV*9J~DPwc(wXl{Fd`vYT8{>^gNKla*Gzut)Z@)!A7 zC0Nl`SMi=b(iMm8n$A6}b((zXS?Q7Q-oV+Re^E^yKA#O=m#;-*uf@MH!4a=dG)vpuZYwY#^b^Kd*#k@%Kh|MD!O^mvJf!^?u%MafzU4)PD z(&O8ui;ruQE~dU%cVtX`y83z5?_=LFcja?h{z5rSk%MgIu87sM^LRj#rcI6 zSkHGTwv_?Kt&p=Z7<;}p199Pg&hxmfS9zs6bJX{R4$b`pH3G+x6R@yN;r9WT`hY@S zR2CKg?ko2VJZBa8IIqk;AWixZI>2H00-z)RGxkX2U36ak+NFIOvMTu3?&a%<`}G;v z6wLWmPu1sj?={4TX~%^3*XvI5aN>95!+D=*&o>SzesZtc_yXe+44zjV2Tf9n-F&-TH4Uj6;hYneN3i{{Sx zw{^n9{zBfz2z0#2Kji%%p1(tSj#>xm?#qdRTEWj;skY)F*r-DfXMg56f-%qn`Hy_i^OyAP zYhSKJU(jZ!%SFNw z)(eXqCB|=`#9Ef`m8+$FL;0LdtVO@;`F|t$=kwYNg8w5o4fxQZFM)SW?!}B3lT)z+YmwnPhecGq_A7}pAi}u@GmZ)1y9b{{Q4~51#FU{G5 z&gEOt{uyXb$dvz1{uMF81KHR9t=-f(mr=Bkwb)0asRgB<%{t73nRoZ0^de|RbLO9Y zZ9J^?=*PZ?y7=r-*P<2~;IA{t%jYb>s1qvwl^el*wnuH^N8G=Gv)-!rAdV0jes%|Z z_R6%}caQl!_bmIh9{)iD3ZCW}nybIoDLp>2Q=0w(F~h#1RWc_blh7Y!ckOUv$ZZz? zmCS=U8!Epo!+*B_#hxtTRNgP{m9v8XV@DYL(XKC)W8c@$eeY|>T=niYfq&;f+AGZn z`)&#U<WB946Kgj0yQCs+Q(X&sQEvrmcG&kCELzd_TVV{M|9$RkVV9GIS{ z>XPm_r!_u0)#)Nwy-T>f6lWe#E5lqN1VL5U&C5BHfv=$UU{rEK>WLh#C~J=cP_=f@fXH9S$|;I$B+7Z zL;OGUqZ_(jdBPsVE)kzqhX43}#=kU#Rq>_D2rFhc}DdJI>Cvp1JXW^>mcE6ZOr%Rm|b;%qZM-3b0GK5^t<8{$7b^TRzaKXFfV3SxlR=jyx0_Jq%X zxmO=Cwk`T$KmD72RIy$~EBfXAEDMy&1HRtuJB-tOsq90q{TO=JHG8CIrXGwBMzP#7Gs`FXmm@N&N}Cy>-To*$FzUPF7lnOcP4+1;+3izoV^iJ+T|c0xaV! zuhk3pk8^tOx_E~;-@A&j8($@j8^ZXN@rRU}dS~YO_T3ipk9%+%n|6{nuhHK(_4&=~ zd!Dn{Q|@nDo=5jlwBk41JHD?>pl?}Qq1XD)=kIORmGuMr=J0vOZOD1hA$gWD=fA3; zMxgbI3oGJ}WPPeeD7jw5pR^#aRHJucS@K8m8a;DlwClp3`y|zJdLgZ}MXYF%H`hnrjjB${rg@Zm}(|N8Za@d;Mp|=bPQP*iY_L z<~CYseq&#k_Fj1(^8S-&sGoX`y|`7FFQ?T7{)Zw1WPh%HcH{W1({lrSc^PMDTe~`Z z#E}bF_@_b-0QW0sQ8OUZfbcyVQ-Z9|y{IVw-nB1>Uz=F6rL&M5=Ixt))4ye!cpA1% ze%~6D=8cIV_n)~7+9iYkFfZ2i3jPyVgl~#>#$C__=AjJ#d7nC8+Bl2)7kr=Zs%uU8 z>IZ+;5dZ#t+4~M$(;s&41!K2Fe>Kp&MG=Hq& z8~^OL=$Y;f=ao5*=4hjo(S5e<4>ITaH#W-himFxQ}`OIqU%bty847qv!o(=tn z!TY4yA7+p7JDx41+%BIshgN-EJBRlif5@MVR~q1W?QiBk4e>8t%kl4Lof~b5$~FBs z*Jl2;pS!g&{9p6&BNz8Sv1MRd`>Xo7v~Up3X9TUK59RnT_+JBAxYWn|+fA*_P;9;W zcdesn?d>7pG3-C|S=mm0Y#jY0o@e~P0&E4hL6d)SB{|yzcS?^`w@8moXq6tH)GGaH zQk(RriEYy#$F)n3jM^jpcSYOu%R%kZ9T!2zzp!1J@ll?Ij-?I6d_Awuvo%Djp@}2a z@v#F9rCx}-s5za3>4$tju+QGiI*fET{4iX%G{&aJ{?2{&r5Mim_sU#n>_;wb8Lue# zMF|V+#X)@6=6-L^TxPps6*S0w9rdAHf13K=cP=9i1Uul;nc$ijcF%ayo@AWr8t`0) zuh^!J8oFtjy-yjzT=BYF`Rq-+Mh;lXnPM+-Hn)3u$dS?IzzbyyEy+7oSzhRoqMaHjSxl?DgX;?o~GU`}KThTRy|@Y<#`n+nUe5 z-e+$8=a^6DwX_%F`=x!O9WeH|cA`@AUX~l>8}g>+;$OaKAFMT@EiLu{dE~>{lVWiU z^7)^qkXM48zK{XLKX`}NNA522K;*K4|H3a&q65bK=^sGnUySWwC9y2a7jgdZ?2hU7 zFY}x5{9*6H_6Z(`65nfWI(?hU9QMP0X%h%pxqhD&eRZBPs z=7)U|zsYy)n`3tl{l0T*GroHu&(Y6309m8YG22JIkRc^npYtn%|M2|CXT%ocIiTtT zd922w1TEot@{0O#^Y=Tiw|)*{&GY^!yXN~*SBn~2RkRW85u0cHxF*(k%j>?abFZ!3 z@4CN~w|(9aYtOmCR~DcJ4dCx0=C`m@ zuO*j2JK|!_kN(Lu@D%qm`*;ZP_Cv7qi;;|5SNlZ)xW*-pvLh3$Pa2h--CQAZII?s`phliUn~q36aJoa z=WkJKFj~X)DeIU0EPQF!^J2V=Pn^o5eV(-<)WNK)V4cOm_=xn2nhPPXmi|TKY>7Cl z7rEUy4(Y1?3+%R|Hy;JwpNMgL zh424Y-!>5=>-izZJo;>Per=D&%Q)u#jM2Q|!C*)HOYcU30rm0F$?2#2CU}|iRKi}P z_~&!V6=Fy`n>BLAe&*OeHHLlf5fiv$-}mlQH-h>?Ly!TqjfnrgCH`OhMuCUGgwN;q zquCcQQICJ=fS4)u*E!CzLhN}7#y_3Sg1lyk_Lp1F5cNU zV&5|#%X1_`Hs|}4GI0Wqs$`kc^0prNBWY7pcUqQ=sBltpzwz)Rq-!*Uy z^<&(I*Z-`zmj}J+eRF?^;Sw(oy2_l!-Y)H{%*X2Kfa{v+#v6eD%y*1c8!YdD_ly6* zI`TepvwV!!jGygB&7n`k1Y0aB8Hur1B5Wg)g z8Ua6%r^v_L%Y)ee1Nhve|3C(qbqH}OMIDR!n6i1>Z7@DywQ&LBo-?}B0^&<%l7BwG zRrsm?Hmg&b`k&+m@tpqfw|?|p88hqCvA^s~Y5e6lYPk0ce1W+V|ItsW&A?|^k9a8d z#DUN+&lMgb9pQf9m|UtWsENDu-kVQ;E&Q*2==<-!`h-2BhMqZB)-cNaSR16jW8Vjo z>s0+7&s!<5-mstf?|NLiUVK-%p}cMOerZkLxrg2Gow?XV)8C}I2zmqVq%pBK#Xn~V z*`x(xP3$O-8*6*-b#2pP&aht*F@0bi%&QNq(MDm6er)lmpCr_55yQ`okXM zyuHq*9j9KNp}+b2p$GDex7+pg&RbKTd%Mlo8$DimjTm%(tKj>iI76_CHlk#c5L01) zX8&J*2DPnc97rr0=k`RL8TvnXk8^p=6}$oeVAu$WTcz&hiaA}<-4~(rE60NyF{F;6 z-O9S$=9X->|2dbU$?>V{ijUIO{`t2ytl<4TTm4nrmbz^PSoJC$=!s15l_Pda58pEB zD;eXjb$#*f+fF@+rt0WDuhOlu(A;ZvzruJsz_nqrPpV@5e zj_qyO8lR)rH>dx%=Zk&TjQvpgI=&mW2e2;<5KrRY^B}#3kAY{1A8Tl82lAY|-wx!g zTk6fNqgH*?t_%EQ6XeXBs2PNBa1Hfn>K5)x4cyk$?1e{nHJ)vcuq|j?_Z%{9)Z%k% z$5_5!{H|kA7KmIsWf`AKvnH=`DxQ~d1$8}!o%L@&e=W>6d~ZRI^B%nDuvW+#t;07z zm{^5~k>t7hCPEK@CU||V)|7tccU~pq(BFD_=WX&j&p~spZ?`#n`Aq%9(7zQny2i%Sa6dGLF+bD)sKP&{93YJ{ug>^cb9Ws_ zA9DIGJg)t^Cw_eEF%2=krN0M#>fcsfb~t$mC$V#)Qb)6>&CrU}^k`+{-(ZiA?QF@W<4M;_NY>YeIi z9)ulmAn_?pjU}(G*WjV_Pwib!lz$8gJ$Go%!1` zZQSAjN-u$Na-PzPeL-dHw;^gC!4*7@#;4_euoM|t3<{-|27>*9^nUzDyzf(pZiVoeEXJ!0v#vA#aa?E5L zHM~j}e73QW`ns)~VqTQCK+hV!>f}AssPjK@XJgoYz4xBF=hly%fBZhF+fl8VBXaeS zHzM{9x@fFImR&OKY$)%?d^*3hVlCc&GJc+;#;y(Jysi1WvFE*WZ)^6~rahVC)iUnH zrTFg)kLxW?)kneCPo1J!Wf=L}T9?`xJYd*S%@Rzw|@S9&j`@ zpUBNu{{7BnoEJ2QGsEx&EU#_Bd3T-Cy}epROiw>>-y2%tnREU4tk2Sip8e=z!{1VN zH}|bSxR6HpIro7!$A(QmM8us*JESl83gr7@tb()m{GMlB_ojx|mk*)d)_MPNcf%Tg zuZ8g~z4!bt?|SdxPyYMbZpZCS4$*F$xdPsiJqCK#E;dHzr$04Hr2*pF{@5@3Cq0zr z4U!h+ae&(zf*5zTZ^8 z^ZhM7BY*C#x;D3eTl#)r(Rl)o=6e|f9{4ZOfC0q+7_Z}b(nHYWhhoDU1RtMuhBX4a zrkAGei9euo`rVLy(uC8%CExFfj9~1HxDL#hu&*6aJ;L9N-{Loe4}uN-YQ~@kPIz6u z-i|@M+r(FH=CGJMe>E|M-HD66_Jp?S%SW_H^ZH&qV@r76miN<&Cp#|ad(rnVeRl`W z&~6QV+Z`Ear^qYlM@+tFojV?78^>Y}eU7Qkx{L9Hj?tP21EmZ8{Ti(y9c=jbYkk-E z8h*av-&^|rmfmmpyoP^o>H86bOh22tMqG#c;Wb*r-z@)oOTSHBZ?`;GOf z{N9#+zx=a}zAo(%{qoTQd&T~B4~yrxg1y1!1i<$OgKupC5BA%Ob0iN<&yMY!YN#hM zh-dWS`~A_4uR{h8J0jROza+~OUVWy%bDMs<$a}_jzZq7bIoj`S%Fsarc((F_HF|A* zpas40Cm7pvA!ngn^}!?leE-6kjpp`k3*MXh&Wk_&?gu8E{h^1iJholB3R%E&53c3h z?cT>zr=7ZmgH9y=h<-}vg03-6bE&j@s6!Pxt~{?8Tj(>sW}f2S+vpl=%y_r;+Sq(W z?Ee3O`TU2B!@cJGm-+s}W(B^r1=xpS#L-4vtvLb6x#oq*!)iadUHZ$|QhI(c*zmu79X}# zx`y-rtTE92NX~iZywZWx6BvMOU`%r8J6z*6xd_@3qG>pRLK79%>l#(^*+3ize7$3yPo|$|I=;3Dww6IBlQN$o@Z*lO+R(v()f%c zh{p5#9F4xr=X}1OQ;*h;FUCW*SC=Lazb~yH=N5n%Seic-rr-I;G3vOOD?=&St&%=vL{% zBU_}4pbr-l198cboab~@E6z%56|XNpn!jo9TpOQB?i<@}AFYl`e(f`8=N;&EMni3y;`2U3BCw(JlttmvMfmc)0B7Ht7=D zrAN2haKXFUufF``1C|W<)CrGIzx>SG@18uc=dxejdBp3*=Uer;^wd+kt$6C5eV+a4 z_fGoL-FLk2i67ncq2K;s(HXzIefAe0x_S1wKV3BA;(HfNy7Hbyle*nAZ&J6r=1;!* zewx>N7f!k6ZkpHo7EQSJfdvz;y=VT!?hV`h*H7qiFRkJI*ZSMf=kMj~y$dGxyqlJ< z4=kM2>poh;YkuEreop?a+|S%^$Kkjf-+c=wUuAQ=cU?d6ihJfyxct6FQ!abp`pK8x zvuN_g{MJSHEtq)Wee))qci#fq8*#mU%DE5F?rU(RUtfKI*6@1I*Cu^sON~B%`K@dX z`}eAG%pK2o$DjK^zB>N0`DCrm&+V@3CtqNTd3WwzgSpdblP+M_zE>ycy>`aQ)nKe{{pNum14*G3Wkl;h6L9nq7IpZ*G}$q2K>e&E$*k znm_ZByRV;d=}+cOx$K_#Q!l@d>wSyHN4uMKw>@~%^ot(6dCIvDeQWkPzqx(xnSc1f z4gc}vo!@-_AMgLpd!D}k_M_fv-u_n6j(2|dof&v%2Hu&0cV^(78F*&~{(rl6Z~_1T zf&g&;t=mBY5pICU?k7Zm009C72oNAZfWV%>=RfM+^_|4bJMOj;AV7cs0RjXF5FkK+ z0D(k6k5AOh5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 f2oNAZfB*pk1PBlyK!5-N0t5&UAV7csfenEJiac)P From 62e501f31fe8ab920abb437591514656a88f2882 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Thu, 1 Aug 2024 00:56:10 +0300 Subject: [PATCH 37/44] print git info in windows title --- .gitignore | 1 + CMakeLists.txt | 11 ++ .../GetGitRevisionDescription.cmake | 158 ++++++++++++++++++ .../GetGitRevisionDescription.cmake.in | 42 +++++ src/common/scm_rev.cpp.in | 17 ++ src/common/scm_rev.h | 12 ++ src/emulator.cpp | 6 +- src/sdl_window.cpp | 5 +- src/sdl_window.h | 2 +- 9 files changed, 248 insertions(+), 6 deletions(-) create mode 100644 externals/cmake-modules/GetGitRevisionDescription.cmake create mode 100644 externals/cmake-modules/GetGitRevisionDescription.cmake.in create mode 100644 src/common/scm_rev.cpp.in create mode 100644 src/common/scm_rev.h diff --git a/.gitignore b/.gitignore index fcf7634f..2a314508 100644 --- a/.gitignore +++ b/.gitignore @@ -408,3 +408,4 @@ FodyWeavers.xsd /emulator/eboot.bin /out/* /third-party/out/* +/src/common/scm_rev.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 49376076..2901cb2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,15 @@ endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +# generate git revision information +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules/") +include(GetGitRevisionDescription) +get_git_head_revision(GIT_REF_SPEC GIT_REV) +git_describe(GIT_DESC --always --long --dirty) +git_branch_name(GIT_BRANCH) + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp" @ONLY) + find_package(Boost 1.84.0 CONFIG) find_package(cryptopp 8.9.0 MODULE) find_package(fmt 10.2.1 CONFIG) @@ -288,6 +297,8 @@ set(COMMON src/common/logging/backend.cpp src/common/version.h src/common/ntapi.h src/common/ntapi.cpp + src/common/scm_rev.cpp + src/common/scm_rev.h ) set(CORE src/core/aerolib/stubs.cpp diff --git a/externals/cmake-modules/GetGitRevisionDescription.cmake b/externals/cmake-modules/GetGitRevisionDescription.cmake new file mode 100644 index 00000000..087f5dee --- /dev/null +++ b/externals/cmake-modules/GetGitRevisionDescription.cmake @@ -0,0 +1,158 @@ +# - Returns a version string from Git +# +# These functions force a re-configure on each git commit so that you can +# trust the values of the variables in your build system. +# +# get_git_head_revision( [ ...]) +# +# Returns the refspec and sha hash of the current head revision +# +# git_describe( [ ...]) +# +# Returns the results of git describe on the source tree, and adjusting +# the output so that it tests false if an error occurs. +# +# git_get_exact_tag( [ ...]) +# +# Returns the results of git describe --exact-match on the source tree, +# and adjusting the output so that it tests false if there was no exact +# matching tag. +# +# Requires CMake 2.6 or newer (uses the 'function' command) +# +# Original Author: +# 2009-2010 Ryan Pavlik +# http://academic.cleardefinition.com +# Iowa State University HCI Graduate Program/VRAC +# +# Copyright Iowa State University 2009-2010. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +if(__get_git_revision_description) + return() +endif() +set(__get_git_revision_description YES) + +# We must run the following at "include" time, not at function call time, +# to find the path to this module rather than the path to a calling list file +get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) + +function(get_git_head_revision _refspecvar _hashvar) + set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + set(GIT_DIR "${GIT_PARENT_DIR}/.git") + while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories + set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}") + get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH) + if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT) + # We have reached the root directory, we are not in git + set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) + set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) + return() + endif() + set(GIT_DIR "${GIT_PARENT_DIR}/.git") + endwhile() + # check if this is a submodule + if(NOT IS_DIRECTORY ${GIT_DIR}) + file(READ ${GIT_DIR} submodule) + string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule}) + get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) + get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) + endif() + set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") + if(NOT EXISTS "${GIT_DATA}") + file(MAKE_DIRECTORY "${GIT_DATA}") + endif() + + if(NOT EXISTS "${GIT_DIR}/HEAD") + return() + endif() + set(HEAD_FILE "${GIT_DATA}/HEAD") + configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY) + + configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" + "${GIT_DATA}/grabRef.cmake" + @ONLY) + include("${GIT_DATA}/grabRef.cmake") + + set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) + set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) +endfunction() + +function(git_branch_name _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + + if(NOT GIT_FOUND) + set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) + return() + endif() + + execute_process(COMMAND + "${GIT_EXECUTABLE}" + rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY + "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE + res + OUTPUT_VARIABLE + out + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} "${out}" PARENT_SCOPE) +endfunction() + +function(git_describe _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + #get_git_head_revision(refspec hash) + if(NOT GIT_FOUND) + set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) + return() + endif() + #if(NOT hash) + # set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) + # return() + #endif() + + # TODO sanitize + #if((${ARGN}" MATCHES "&&") OR + # (ARGN MATCHES "||") OR + # (ARGN MATCHES "\\;")) + # message("Please report the following error to the project!") + # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") + #endif() + + #message(STATUS "Arguments to execute_process: ${ARGN}") + + execute_process(COMMAND + "${GIT_EXECUTABLE}" + describe + ${hash} + ${ARGN} + WORKING_DIRECTORY + "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE + res + OUTPUT_VARIABLE + out + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} "${out}" PARENT_SCOPE) +endfunction() + +function(git_get_exact_tag _var) + git_describe(out --exact-match ${ARGN}) + set(${_var} "${out}" PARENT_SCOPE) +endfunction() diff --git a/externals/cmake-modules/GetGitRevisionDescription.cmake.in b/externals/cmake-modules/GetGitRevisionDescription.cmake.in new file mode 100644 index 00000000..0d7eb3c2 --- /dev/null +++ b/externals/cmake-modules/GetGitRevisionDescription.cmake.in @@ -0,0 +1,42 @@ +# +# Internal file for GetGitRevisionDescription.cmake +# +# Requires CMake 2.6 or newer (uses the 'function' command) +# +# Original Author: +# 2009-2010 Ryan Pavlik +# http://academic.cleardefinition.com +# Iowa State University HCI Graduate Program/VRAC +# +# Copyright Iowa State University 2009-2010. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +set(HEAD_HASH) + +file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) + +string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) +if(HEAD_CONTENTS MATCHES "ref") + # named branch + string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") + if(EXISTS "@GIT_DIR@/${HEAD_REF}") + configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) + elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}") + configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) + set(HEAD_HASH "${HEAD_REF}") + endif() +else() + # detached HEAD + configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) +endif() + +if(NOT HEAD_HASH) + if(EXISTS "@GIT_DATA@/head-ref") + file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) + string(STRIP "${HEAD_HASH}" HEAD_HASH) + else() + set(HEAD_HASH "Unknown") + endif() +endif() diff --git a/src/common/scm_rev.cpp.in b/src/common/scm_rev.cpp.in new file mode 100644 index 00000000..7f6fba9e --- /dev/null +++ b/src/common/scm_rev.cpp.in @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/scm_rev.h" + +#define GIT_REV "@GIT_REV@" +#define GIT_BRANCH "@GIT_BRANCH@" +#define GIT_DESC "@GIT_DESC@" + +namespace Common { + +const char g_scm_rev[] = GIT_REV; +const char g_scm_branch[] = GIT_BRANCH; +const char g_scm_desc[] = GIT_DESC; + +} // namespace + diff --git a/src/common/scm_rev.h b/src/common/scm_rev.h new file mode 100644 index 00000000..877a0127 --- /dev/null +++ b/src/common/scm_rev.h @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +namespace Common { + +extern const char g_scm_rev[]; +extern const char g_scm_branch[]; +extern const char g_scm_desc[]; + +} // namespace Common diff --git a/src/emulator.cpp b/src/emulator.cpp index 374e0e84..41b3b576 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -27,6 +27,7 @@ #include "core/memory.h" #include "emulator.h" #include "video_core/renderdoc.h" +#include "src/common/scm_rev.h" Frontend::WindowSDL* g_window = nullptr; @@ -100,10 +101,11 @@ void Emulator::Run(const std::filesystem::path& file) { } } } + std::string game_title = fmt::format("{} - {} <{}>", id, title, app_version); - + const std::string window_title = fmt::format("shadPS4 v{} {}| {}", Common::VERSION, Common::g_scm_desc,game_title); window = - std::make_unique(WindowWidth, WindowHeight, controller, game_title); + std::make_unique(WindowWidth, WindowHeight, controller, window_title); g_window = window.get(); diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index 2da24610..98c883ee 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -20,16 +20,15 @@ namespace Frontend { WindowSDL::WindowSDL(s32 width_, s32 height_, Input::GameController* controller_, - std::string_view game_title) + std::string_view window_title) : width{width_}, height{height_}, controller{controller_} { if (SDL_Init(SDL_INIT_VIDEO) < 0) { UNREACHABLE_MSG("Failed to initialize SDL video subsystem: {}", SDL_GetError()); } SDL_InitSubSystem(SDL_INIT_AUDIO); - const std::string title = fmt::format("shadPS4 v{} | {}", Common::VERSION, game_title); SDL_PropertiesID props = SDL_CreateProperties(); - SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, title.c_str()); + SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, std::string(window_title).c_str()); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_X_NUMBER, SDL_WINDOWPOS_CENTERED); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_Y_NUMBER, SDL_WINDOWPOS_CENTERED); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, width); diff --git a/src/sdl_window.h b/src/sdl_window.h index 89b2a877..02d01128 100644 --- a/src/sdl_window.h +++ b/src/sdl_window.h @@ -42,7 +42,7 @@ struct WindowSystemInfo { class WindowSDL { public: explicit WindowSDL(s32 width, s32 height, Input::GameController* controller, - std::string_view game_title); + std::string_view window_title); ~WindowSDL(); s32 getWidth() const { From bd48e24c321637b083c43929225fe1f135b9cd40 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Thu, 1 Aug 2024 01:11:58 +0300 Subject: [PATCH 38/44] print git info to log as well --- .reuse/dep5 | 1 + src/common/version.h | 1 + src/emulator.cpp | 15 ++++++++++++--- src/sdl_window.cpp | 3 ++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.reuse/dep5 b/.reuse/dep5 index c467a164..5f081569 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -16,6 +16,7 @@ Files: CMakeSettings.json documents/Screenshots/We are DOOMED.png externals/stb_image.h externals/tracy/* + externals/cmake-modules/* scripts/ps4_names.txt src/images/controller_icon.png src/images/exit_icon.png diff --git a/src/common/version.h b/src/common/version.h index 8492c7d9..92fd18fb 100644 --- a/src/common/version.h +++ b/src/common/version.h @@ -9,5 +9,6 @@ namespace Common { constexpr char VERSION[] = "0.1.1 WIP"; +constexpr bool isRelease = false; } // namespace Common diff --git a/src/emulator.cpp b/src/emulator.cpp index 41b3b576..a34ee359 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -26,8 +26,8 @@ #include "core/linker.h" #include "core/memory.h" #include "emulator.h" -#include "video_core/renderdoc.h" #include "src/common/scm_rev.h" +#include "video_core/renderdoc.h" Frontend::WindowSDL* g_window = nullptr; @@ -50,6 +50,9 @@ Emulator::Emulator() { Common::Log::Initialize(); Common::Log::Start(); LOG_INFO(Loader, "Starting shadps4 emulator v{} ", Common::VERSION); + LOG_INFO(Loader, "Revision {}", Common::g_scm_rev); + LOG_INFO(Loader, "Branch {}", Common::g_scm_branch); + LOG_INFO(Loader, "Description {}", Common::g_scm_desc); // Defer until after logging is initialized. memory = Core::Memory::Instance(); @@ -101,9 +104,15 @@ void Emulator::Run(const std::filesystem::path& file) { } } } - + std::string game_title = fmt::format("{} - {} <{}>", id, title, app_version); - const std::string window_title = fmt::format("shadPS4 v{} {}| {}", Common::VERSION, Common::g_scm_desc,game_title); + std::string window_title = ""; + if (Common::isRelease) { + window_title = fmt::format("shadPS4 v{} | {}", Common::VERSION, game_title); + } else { + window_title = + fmt::format("shadPS4 v{} {} | {}", Common::VERSION, Common::g_scm_desc, game_title); + } window = std::make_unique(WindowWidth, WindowHeight, controller, window_title); diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index 98c883ee..0d25cd3f 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -28,7 +28,8 @@ WindowSDL::WindowSDL(s32 width_, s32 height_, Input::GameController* controller_ SDL_InitSubSystem(SDL_INIT_AUDIO); SDL_PropertiesID props = SDL_CreateProperties(); - SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, std::string(window_title).c_str()); + SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, + std::string(window_title).c_str()); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_X_NUMBER, SDL_WINDOWPOS_CENTERED); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_Y_NUMBER, SDL_WINDOWPOS_CENTERED); SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, width); From 56b362bb24a17f35352c6b120b9e94e21e7e3f43 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Wed, 31 Jul 2024 19:36:33 -0700 Subject: [PATCH 39/44] Add macOS icon. --- CMakeLists.txt | 7 ++++++- src/images/shadPS4.icns | Bin 0 -> 768841 bytes 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 src/images/shadPS4.icns diff --git a/CMakeLists.txt b/CMakeLists.txt index 2901cb2f..90ba4d83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -553,6 +553,7 @@ if (ENABLE_QT_GUI) ${SHADER_RECOMPILER} ${VIDEO_CORE} ${EMULATOR} + src/images/shadPS4.icns ) else() add_executable(shadps4 @@ -640,5 +641,9 @@ target_include_directories(shadps4 PRIVATE ${HOST_SHADERS_INCLUDE}) if (ENABLE_QT_GUI) set_target_properties(shadps4 PROPERTIES # WIN32_EXECUTABLE ON - MACOSX_BUNDLE ON) + MACOSX_BUNDLE ON + MACOSX_BUNDLE_ICON_FILE shadPS4.icns) + + set_source_files_properties(src/images/shadPS4.icns PROPERTIES + MACOSX_PACKAGE_LOCATION Resources) endif() diff --git a/src/images/shadPS4.icns b/src/images/shadPS4.icns new file mode 100644 index 0000000000000000000000000000000000000000..0e26368dbb2dda958383230e592e36f62f289b27 GIT binary patch literal 768841 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�`^Plqu*2rcnXl7RTK?N# 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