summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/TextureCacheBase.cpp
diff options
context:
space:
mode:
authordegasus <wickmarkus@web.de>2015-03-01 23:53:15 +0100
committerdegasus <wickmarkus@web.de>2015-05-16 15:12:07 +0200
commit242f7d964d30c37f8547a0763484f68d2bdcaef1 (patch)
tree4432d7bf60a104dfd05e8f3ec9d1488394360a1b /Source/Core/VideoCommon/TextureCacheBase.cpp
parent7e6ec5fa869a9d62699639f6775ccccbd52b3c2a (diff)
CustomTexture: prefetch all available textures
Diffstat (limited to 'Source/Core/VideoCommon/TextureCacheBase.cpp')
-rw-r--r--Source/Core/VideoCommon/TextureCacheBase.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/Source/Core/VideoCommon/TextureCacheBase.cpp b/Source/Core/VideoCommon/TextureCacheBase.cpp
index 251ee54783..f06043883d 100644
--- a/Source/Core/VideoCommon/TextureCacheBase.cpp
+++ b/Source/Core/VideoCommon/TextureCacheBase.cpp
@@ -60,8 +60,7 @@ TextureCache::TextureCache()
TexDecoder_SetTexFmtOverlayOptions(g_ActiveConfig.bTexFmtOverlayEnable, g_ActiveConfig.bTexFmtOverlayCenter);
- if (g_ActiveConfig.bHiresTextures && !g_ActiveConfig.bDumpTextures)
- HiresTexture::Init(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID);
+ HiresTexture::Init();
SetHash64Function();
@@ -92,6 +91,7 @@ void TextureCache::Invalidate()
TextureCache::~TextureCache()
{
+ HiresTexture::Shutdown();
Invalidate();
FreeAlignedMemory(temp);
temp = nullptr;
@@ -101,6 +101,12 @@ void TextureCache::OnConfigChanged(VideoConfig& config)
{
if (g_texture_cache)
{
+ if (config.bHiresTextures != backup_config.s_hires_textures ||
+ config.bCacheHiresTextures != backup_config.s_cache_hires_textures)
+ {
+ HiresTexture::Update();
+ }
+
// TODO: Invalidating texcache is really stupid in some of these cases
if (config.iSafeTextureCache_ColorSamples != backup_config.s_colorsamples ||
config.bTexFmtOverlayEnable != backup_config.s_texfmt_overlay ||
@@ -110,9 +116,6 @@ void TextureCache::OnConfigChanged(VideoConfig& config)
{
g_texture_cache->Invalidate();
- if (g_ActiveConfig.bHiresTextures)
- HiresTexture::Init(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID);
-
TexDecoder_SetTexFmtOverlayOptions(g_ActiveConfig.bTexFmtOverlayEnable, g_ActiveConfig.bTexFmtOverlayCenter);
invalidate_texture_cache_requested = false;
@@ -130,6 +133,7 @@ void TextureCache::OnConfigChanged(VideoConfig& config)
backup_config.s_texfmt_overlay = config.bTexFmtOverlayEnable;
backup_config.s_texfmt_overlay_center = config.bTexFmtOverlayCenter;
backup_config.s_hires_textures = config.bHiresTextures;
+ backup_config.s_cache_hires_textures = config.bCacheHiresTextures;
backup_config.s_stereo_3d = config.iStereoMode > 0;
backup_config.s_efb_mono_depth = config.bStereoEFBMonoDepth;
}
@@ -433,15 +437,15 @@ TextureCache::TCacheEntryBase* TextureCache::Load(const u32 stage)
textures.erase(oldest_entry);
}
- std::unique_ptr<HiresTexture> hires_tex;
+ std::shared_ptr<HiresTexture> hires_tex;
if (g_ActiveConfig.bHiresTextures)
{
- hires_tex.reset(HiresTexture::Search(
+ hires_tex = HiresTexture::Search(
src_data, texture_size,
&texMem[tlutaddr], palette_size,
width, height,
texformat, use_mipmaps
- ));
+ );
if (hires_tex)
{