diff options
| author | cbartondock <cbartondock@gmail.com> | 2026-07-15 12:02:16 -0700 |
|---|---|---|
| committer | cbartondock <cbartondock@gmail.com> | 2026-07-15 12:02:16 -0700 |
| commit | 83dc4685aacd52bb61cfcd9f3ffb74180d074cca (patch) | |
| tree | 59f8ae79d169576b07727a7a174d9e7b316615f9 /Source/Core/VideoCommon/HiresTextures.cpp | |
| parent | d3b2943807dd0073f7767947466dd73cccfef319 (diff) | |
waterfall loading of textures via id to prefer elfid-gameid when launched via elf; fallback to gameid if no match
Diffstat (limited to 'Source/Core/VideoCommon/HiresTextures.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/HiresTextures.cpp | 40 |
1 files changed, 25 insertions, 15 deletions
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 <fmt/format.h> #include <memory> #include <string> #include <string_view> @@ -10,8 +11,6 @@ #include <utility> #include <xxhash.h> -#include <fmt/format.h> - #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<std::string> texture_directories = - GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id); + const std::set<std::string> texture_directories = GetTextureDirectoriesForFirstMatchingGameId( + File::GetUserPath(D_HIRESTEXTURES_IDX), SConfig::GetInstance().GetGameIDsForTextures()); + constexpr auto extensions = std::to_array<std::string_view>({".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<std::string> 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<std::string> GetTextureDirectoriesWithGameId(const std::string& root_di return result; } + +std::set<std::string> +GetTextureDirectoriesForFirstMatchingGameId(const std::string& root_directory, + const std::vector<std::string>& game_ids) +{ + for (const auto& game_id : game_ids) + { + auto directories = GetTextureDirectoriesWithGameId(root_directory, game_id); + if (!directories.empty()) + return directories; + } + return {}; +} |
