@@ -30,9 +30,6 @@ std::unique_ptr<GSTextureCache> g_texture_cache;
3030
3131static u8 * s_unswizzle_buffer;
3232
33- // / List of candidates for purging when the hash cache gets too large.
34- static std::vector<std::pair<GSTextureCache::HashCacheMap::iterator, s32>> s_hash_cache_purge_list;
35-
3633#ifdef PCSX2_DEVBUILD
3734// We can only set one texture name per command buffer, which would break our fancy texture cache RT/DS/texture naming.
3835// So, when debug device is enabled, don't reuse any textures that are drawable.
@@ -62,7 +59,6 @@ GSTextureCache::~GSTextureCache()
6259{
6360 RemoveAll (true , true , true );
6461
65- s_hash_cache_purge_list = {};
6662 _aligned_free (s_unswizzle_buffer);
6763}
6864
@@ -109,6 +105,8 @@ void GSTextureCache::RemoveAll(bool sources, bool targets, bool hash_cache)
109105 m_hash_cache.clear ();
110106 m_hash_cache_memory_usage = 0 ;
111107 m_hash_cache_replacement_memory_usage = 0 ;
108+
109+ m_hash_cache_purge_list.clear ();
112110 }
113111}
114112
@@ -6811,7 +6809,7 @@ void GSTextureCache::AgeHashCache()
68116809
68126810 bool might_need_cache_purge = (m_hash_cache.size () > MAX_HASH_CACHE_SIZE);
68136811 if (might_need_cache_purge)
6814- s_hash_cache_purge_list .clear ();
6812+ m_hash_cache_purge_list .clear ();
68156813
68166814 for (auto it = m_hash_cache.begin (); it != m_hash_cache.end ();)
68176815 {
@@ -6833,7 +6831,7 @@ void GSTextureCache::AgeHashCache()
68336831 {
68346832 might_need_cache_purge = (m_hash_cache.size () > MAX_HASH_CACHE_SIZE);
68356833 if (might_need_cache_purge)
6836- s_hash_cache_purge_list .emplace_back (it, static_cast <s32>(e.age ));
6834+ m_hash_cache_purge_list .emplace_back (it, static_cast <s32>(e.age ));
68376835 }
68386836
68396837 ++it;
@@ -6842,13 +6840,13 @@ void GSTextureCache::AgeHashCache()
68426840 // Pushing to a list, sorting, and removing ends up faster than re-iterating the map.
68436841 if (might_need_cache_purge)
68446842 {
6845- std::sort (s_hash_cache_purge_list .begin (), s_hash_cache_purge_list .end (),
6843+ std::sort (m_hash_cache_purge_list .begin (), m_hash_cache_purge_list .end (),
68466844 [](const auto & lhs, const auto & rhs) { return lhs.second > rhs.second ; });
68476845
68486846 const u32 entries_to_purge = std::min (static_cast <u32 >(m_hash_cache.size () - MAX_HASH_CACHE_SIZE),
6849- static_cast <u32 >(s_hash_cache_purge_list .size ()));
6847+ static_cast <u32 >(m_hash_cache_purge_list .size ()));
68506848 for (u32 i = 0 ; i < entries_to_purge; i++)
6851- RemoveFromHashCache (s_hash_cache_purge_list [i].first );
6849+ RemoveFromHashCache (m_hash_cache_purge_list [i].first );
68526850 }
68536851}
68546852
0 commit comments