diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index a097e4dd1..7521cb1ed 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -440,17 +440,11 @@ @string/gc_aggressiveness_off @string/gc_aggressiveness_light - @string/gc_aggressiveness_moderate - @string/gc_aggressiveness_heavy - @string/gc_aggressiveness_extreme 0 1 - 2 - 3 - 4 diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 7770bcb0e..f2cb82ab2 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -153,6 +153,7 @@ Extracting ExeFS… Extraction completed successfully Extraction failed + Cannot dump while a game is running. Please close the game first. Choose where to save the extracted files. Select a location or use the default dump directory. Select Location Use Default @@ -1289,10 +1290,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Log VRAM Usage Enable logging of VRAM usage statistics for debugging purposes. Off (Not Recommended) - Light - Moderate (Recommended) - Heavy (Low VRAM) - Extreme (4GB VRAM) + Light (Recommended) Frame Skipping diff --git a/src/citron/configuration/shared_translation.cpp b/src/citron/configuration/shared_translation.cpp index 31afa5dc8..d9fcee532 100644 --- a/src/citron/configuration/shared_translation.cpp +++ b/src/citron/configuration/shared_translation.cpp @@ -400,10 +400,7 @@ std::unique_ptr ComboboxEnumeration(QWidget* parent) { translations->insert({Settings::EnumMetadata::Index(), { PAIR(GCAggressiveness, Off, tr("Off (Not Recommended)")), - PAIR(GCAggressiveness, Light, tr("Light")), - PAIR(GCAggressiveness, Moderate, tr("Moderate (Recommended)")), - PAIR(GCAggressiveness, Heavy, tr("Heavy (Low VRAM)")), - PAIR(GCAggressiveness, Extreme, tr("Extreme (4GB VRAM)")), + PAIR(GCAggressiveness, Light, tr("Light (Recommended)")), }}); translations->insert({Settings::EnumMetadata::Index(), diff --git a/src/common/settings.h b/src/common/settings.h index 4d0906964..afefe1334 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -520,9 +520,9 @@ struct Values { // GC aggressiveness level for texture/buffer cache eviction SwitchableSetting gc_aggressiveness{linkage, - GCAggressiveness::Moderate, + GCAggressiveness::Light, GCAggressiveness::Off, - GCAggressiveness::Extreme, + GCAggressiveness::Light, "gc_aggressiveness", Category::RendererAdvanced, Specialization::Default, diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h index e6bd1c186..e7dbd5497 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -878,11 +878,8 @@ inline u32 EnumMetadata::Index() { // FIXED: VRAM leak prevention - GC aggressiveness levels enum class GCAggressiveness : u32 { - Off = 0, // Disable automatic GC (not recommended) - Light = 1, // Light GC - only evict very old textures - Moderate = 2, // Moderate GC - balanced eviction (default) - Heavy = 3, // Heavy GC - aggressive eviction for low VRAM systems - Extreme = 4, // Extreme GC - maximum eviction for 4GB VRAM systems + Off = 0, // Disable automatic GC (not recommended) + Light = 1, // Light GC - gentle eviction of old textures/buffers }; template <> @@ -891,9 +888,6 @@ EnumMetadata::Canonicalizations() { return { {"Off", GCAggressiveness::Off}, {"Light", GCAggressiveness::Light}, - {"Moderate", GCAggressiveness::Moderate}, - {"Heavy", GCAggressiveness::Heavy}, - {"Extreme", GCAggressiveness::Extreme}, }; } diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 8f54408a1..b8dca7f72 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -57,21 +57,10 @@ BufferCache

::BufferCache(Tegra::MaxwellDeviceMemoryManager& device_memory_, R critical_ratio = 0.95f; break; case Settings::GCAggressiveness::Light: + default: expected_ratio = 0.70f; critical_ratio = 0.85f; break; - case Settings::GCAggressiveness::Moderate: - expected_ratio = 0.50f; - critical_ratio = 0.70f; - break; - case Settings::GCAggressiveness::Heavy: - expected_ratio = 0.40f; - critical_ratio = 0.60f; - break; - case Settings::GCAggressiveness::Extreme: - expected_ratio = 0.30f; - critical_ratio = 0.50f; - break; } minimum_memory = static_cast(static_cast(vram_limit_bytes) * expected_ratio); @@ -106,23 +95,10 @@ void BufferCache

::RunGarbageCollector() { switch (gc_level) { case Settings::GCAggressiveness::Light: + default: base_ticks = eviction_frames * 2; base_iterations = 16; break; - case Settings::GCAggressiveness::Moderate: - base_ticks = eviction_frames; - base_iterations = 32; - break; - case Settings::GCAggressiveness::Heavy: - base_ticks = std::max(1ULL, static_cast(eviction_frames / 2)); - base_iterations = 64; - break; - case Settings::GCAggressiveness::Extreme: - base_ticks = 1; - base_iterations = 128; - break; - default: - break; } u64 ticks_to_destroy; diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 245b55839..00f2aac0e 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -75,21 +75,10 @@ TextureCache

::TextureCache(Runtime& runtime_, Tegra::MaxwellDeviceMemoryManag critical_ratio = 0.99f; break; case Settings::GCAggressiveness::Light: + default: expected_ratio = 0.75f; critical_ratio = 0.90f; break; - case Settings::GCAggressiveness::Moderate: - expected_ratio = 0.60f; - critical_ratio = 0.80f; - break; - case Settings::GCAggressiveness::Heavy: - expected_ratio = 0.50f; - critical_ratio = 0.70f; - break; - case Settings::GCAggressiveness::Extreme: - expected_ratio = 0.40f; - critical_ratio = 0.60f; - break; } expected_memory = static_cast(static_cast(vram_limit_bytes) * expected_ratio); @@ -148,23 +137,10 @@ void TextureCache

::RunGarbageCollector() { switch (gc_level) { case Settings::GCAggressiveness::Light: + default: base_ticks = eviction_frames * 2; base_iterations = 5; break; - case Settings::GCAggressiveness::Moderate: - base_ticks = eviction_frames; - base_iterations = 10; - break; - case Settings::GCAggressiveness::Heavy: - base_ticks = std::max(1ULL, static_cast(eviction_frames / 2)); - base_iterations = 20; - break; - case Settings::GCAggressiveness::Extreme: - base_ticks = 1; - base_iterations = 40; - break; - default: - break; } if (emergency_mode) { @@ -411,21 +387,10 @@ void TextureCache

::SetVRAMLimit(u64 limit_bytes) { critical_ratio = 0.99f; break; case Settings::GCAggressiveness::Light: + default: expected_ratio = 0.75f; critical_ratio = 0.90f; break; - case Settings::GCAggressiveness::Moderate: - expected_ratio = 0.60f; - critical_ratio = 0.80f; - break; - case Settings::GCAggressiveness::Heavy: - expected_ratio = 0.50f; - critical_ratio = 0.70f; - break; - case Settings::GCAggressiveness::Extreme: - expected_ratio = 0.40f; - critical_ratio = 0.60f; - break; } expected_memory = static_cast(static_cast(vram_limit_bytes) * expected_ratio);