aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/texture_cache.h
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-11-01 13:26:20 -0500
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-11-01 13:26:20 -0500
commit0b4ef27d1124d5ae5d10d48711730e692f35b4b6 (patch)
treedebdbe06d7b0fb84d660c0d3a3f248ae158ff5d3 /src/video_core/texture_cache/texture_cache.h
parent081c9f6f5eab8020ad3da66cc46d50021aec0ee6 (diff)
parent4d8a9629a6f49f57adfa420a7196e5967677f10f (diff)
Merge remote-tracking branch 'origin/fix/tc-cap-device-memory' into test/linux-all-prs
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
-rw-r--r--src/video_core/texture_cache/texture_cache.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index e583d48349..12621657af 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -185,6 +185,14 @@ void TextureCache<P>::RunGarbageCollector() {
template <class P>
void TextureCache<P>::ApplyThresholdOverrides(bool log) {
+ // On every GPU: past what a frame needs, more device memory only keeps the textures of earlier
+ // scenes (title 1 filled 6.7 GB of an 8 GB card and draws its races in ~5 GB), so collect from
+ // MaxCriticalMemory on rather than near the card's budget.
+ critical_memory = (std::min)(critical_memory, MaxCriticalMemory);
+ expected_memory =
+ (std::min)(expected_memory, critical_memory - (std::min)(critical_memory, u64{768_MiB}));
+ minimum_memory =
+ (std::min)(minimum_memory, expected_memory - (std::min)(expected_memory, u64{1_GiB}));
// EDEN_NX2_TC_EXPECTED_MIB / EDEN_NX2_TC_CRITICAL_MIB override the collector's thresholds.
for (const auto& [name, target] : {std::pair{"EDEN_NX2_TC_EXPECTED_MIB", &expected_memory},
std::pair{"EDEN_NX2_TC_CRITICAL_MIB", &critical_memory}}) {