From 83dc4685aacd52bb61cfcd9f3ffb74180d074cca Mon Sep 17 00:00:00 2001 From: cbartondock Date: Wed, 15 Jul 2026 12:02:16 -0700 Subject: waterfall loading of textures via id to prefer elfid-gameid when launched via elf; fallback to gameid if no match --- Source/Core/VideoCommon/HiresTextures.cpp | 40 +++++++++++++++++++------------ 1 file changed, 25 insertions(+), 15 deletions(-) (limited to 'Source/Core/VideoCommon/HiresTextures.cpp') diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 1e423a8aa6..575f82be04 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -3,6 +3,7 @@ #include "VideoCommon/HiresTextures.h" +#include #include #include #include @@ -10,8 +11,6 @@ #include #include -#include - #include "Common/CommonPaths.h" #include "Common/FileSearch.h" #include "Common/FileUtil.h" @@ -84,9 +83,9 @@ void HiresTexture::Update() return; } - const std::string& game_id = SConfig::GetInstance().GetGameID(); - const std::set texture_directories = - GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id); + const std::set texture_directories = GetTextureDirectoriesForFirstMatchingGameId( + File::GetUserPath(D_HIRESTEXTURES_IDX), SConfig::GetInstance().GetGameIDsForTextures()); + constexpr auto extensions = std::to_array({".png", ".dds"}); for (const auto& texture_directory : texture_directories) @@ -141,16 +140,14 @@ void HiresTexture::Update() } } - if (g_ActiveConfig.bCacheHiresTextures) - { - OSD::AddMessage(fmt::format("Loading '{}' custom textures", s_hires_texture_cache.size()), - 10000); - } - else - { - OSD::AddMessage( - fmt::format("Found '{}' custom textures", s_hires_texture_id_to_arbmipmap.size()), 10000); - } + const std::vector game_ids_for_textures = + SConfig::GetInstance().GetGameIDsForTextures(); + const std::string game_id_display = fmt::format("{}", fmt::join(game_ids_for_textures, "' or '")); + + const auto message = fmt::format("{} '{}' custom textures for '{}'", + g_ActiveConfig.bCacheHiresTextures ? "Preloading" : "Found", + s_hires_texture_cache.size(), game_id_display); + OSD::AddMessage(message, 10000); } void HiresTexture::Clear() @@ -238,3 +235,16 @@ std::set GetTextureDirectoriesWithGameId(const std::string& root_di return result; } + +std::set +GetTextureDirectoriesForFirstMatchingGameId(const std::string& root_directory, + const std::vector& game_ids) +{ + for (const auto& game_id : game_ids) + { + auto directories = GetTextureDirectoriesWithGameId(root_directory, game_id); + if (!directories.empty()) + return directories; + } + return {}; +} -- cgit v1.2.3