summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/HiresTextures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/HiresTextures.cpp')
-rw-r--r--Source/Core/VideoCommon/HiresTextures.cpp35
1 files changed, 19 insertions, 16 deletions
diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp
index b64c521e08..8acc3aff03 100644
--- a/Source/Core/VideoCommon/HiresTextures.cpp
+++ b/Source/Core/VideoCommon/HiresTextures.cpp
@@ -25,7 +25,6 @@
#include "Core/ConfigManager.h"
#include "Core/System.h"
#include "VideoCommon/Assets/CustomAsset.h"
-#include "VideoCommon/Assets/CustomAssetLoader.h"
#include "VideoCommon/Assets/DirectFilesystemAssetLibrary.h"
#include "VideoCommon/OnScreenDisplay.h"
#include "VideoCommon/VideoConfig.h"
@@ -95,10 +94,11 @@ void HiresTexture::Update()
GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id);
const std::vector<std::string> extensions{".png", ".dds"};
- auto& system = Core::System::GetInstance();
-
for (const auto& texture_directory : texture_directories)
{
+ // Watch this directory for any texture reloads
+ s_file_library->Watch(texture_directory);
+
const auto texture_paths =
Common::DoFileSearch({texture_directory}, extensions, /*recursive*/ true);
@@ -130,10 +130,10 @@ void HiresTexture::Update()
if (g_ActiveConfig.bCacheHiresTextures)
{
- auto hires_texture = std::make_shared<HiresTexture>(
- has_arbitrary_mipmaps,
- system.GetCustomAssetLoader().LoadGameTexture(filename, s_file_library));
- s_hires_texture_cache.try_emplace(filename, std::move(hires_texture));
+ auto hires_texture =
+ std::make_shared<HiresTexture>(has_arbitrary_mipmaps, std::move(filename));
+ static_cast<void>(hires_texture->LoadTexture());
+ s_hires_texture_cache.try_emplace(hires_texture->GetId(), hires_texture);
}
}
}
@@ -167,7 +167,7 @@ void HiresTexture::Clear()
std::shared_ptr<HiresTexture> HiresTexture::Search(const TextureInfo& texture_info)
{
- const auto [base_filename, has_arb_mipmaps] = GetNameArbPair(texture_info);
+ auto [base_filename, has_arb_mipmaps] = GetNameArbPair(texture_info);
if (base_filename == "")
return nullptr;
@@ -177,24 +177,27 @@ std::shared_ptr<HiresTexture> HiresTexture::Search(const TextureInfo& texture_in
}
else
{
- auto& system = Core::System::GetInstance();
- auto hires_texture = std::make_shared<HiresTexture>(
- has_arb_mipmaps,
- system.GetCustomAssetLoader().LoadGameTexture(base_filename, s_file_library));
+ auto hires_texture = std::make_shared<HiresTexture>(has_arb_mipmaps, std::move(base_filename));
if (g_ActiveConfig.bCacheHiresTextures)
{
- s_hires_texture_cache.try_emplace(base_filename, hires_texture);
+ s_hires_texture_cache.try_emplace(hires_texture->GetId(), hires_texture);
}
return hires_texture;
}
}
-HiresTexture::HiresTexture(bool has_arbitrary_mipmaps,
- std::shared_ptr<VideoCommon::GameTextureAsset> asset)
- : m_has_arbitrary_mipmaps(has_arbitrary_mipmaps), m_game_texture(std::move(asset))
+HiresTexture::HiresTexture(bool has_arbitrary_mipmaps, std::string id)
+ : m_has_arbitrary_mipmaps(has_arbitrary_mipmaps), m_id(std::move(id))
{
}
+VideoCommon::CustomResourceManager::TextureTimePair HiresTexture::LoadTexture() const
+{
+ auto& system = Core::System::GetInstance();
+ auto& custom_resource_manager = system.GetCustomResourceManager();
+ return custom_resource_manager.GetTextureDataFromAsset(m_id, s_file_library);
+}
+
std::set<std::string> GetTextureDirectoriesWithGameId(const std::string& root_directory,
const std::string& game_id)
{