diff options
| author | Markus Wick <markus+github@selfnet.de> | 2015-05-26 13:30:26 +0200 |
|---|---|---|
| committer | Markus Wick <markus+github@selfnet.de> | 2015-05-26 13:30:26 +0200 |
| commit | a6412fb41eb3aa2a1c4109e6fbd0c7e69030d717 (patch) | |
| tree | 75986c32396564ffb7b391fb86d403ac7ca4b465 /Source/Core/VideoCommon/TextureCacheBase.cpp | |
| parent | 5d3a248811e3c836cc34d7af1a11de91f3132829 (diff) | |
| parent | 562b9d4a9f3710a65a2987a3c1a88e00778c6d67 (diff) | |
Merge pull request #2162 from degasus/prefetch_tex
CustomTexture: prefetch all available textures
Diffstat (limited to 'Source/Core/VideoCommon/TextureCacheBase.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/TextureCacheBase.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Source/Core/VideoCommon/TextureCacheBase.cpp b/Source/Core/VideoCommon/TextureCacheBase.cpp index bce936661e..ac882ec3df 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) { |
