From 47656f1fdfc013d4c3f57752929181e45760c838 Mon Sep 17 00:00:00 2001 From: Collecting Date: Sun, 25 Jan 2026 13:41:26 +0100 Subject: [PATCH 1/3] fix(compiler): static_cast w/ unsigned long long to remove ambiguity Signed-off-by: Collecting --- src/video_core/texture_cache/texture_cache.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index f16b0c6fe..a121d7b7e 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -156,7 +156,7 @@ void TextureCache

::RunGarbageCollector() { base_iterations = 10; break; case Settings::GCAggressiveness::Heavy: - base_ticks = std::max(1ULL, eviction_frames / 2); + base_ticks = std::max(1ULL, static_cast(eviction_frames / 2)); base_iterations = 20; break; case Settings::GCAggressiveness::Extreme: @@ -171,7 +171,7 @@ void TextureCache

::RunGarbageCollector() { ticks_to_destroy = 1; num_iterations = base_iterations * 4; } else if (aggressive_mode) { - ticks_to_destroy = std::max(1ULL, base_ticks / 2); + ticks_to_destroy = std::max(1ULL, static_cast(base_ticks / 2)); num_iterations = base_iterations * 2; } else if (high_priority_mode) { ticks_to_destroy = base_ticks; From f428c20bf6546e0730f399ae414082704ee89ffc Mon Sep 17 00:00:00 2001 From: Collecting Date: Sun, 25 Jan 2026 13:42:19 +0100 Subject: [PATCH 2/3] fix(compiler): static_cast w/ unsigned long long to remove ambiguity Signed-off-by: Collecting --- src/video_core/buffer_cache/buffer_cache.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index c8d14c78c..d32f228e2 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -114,7 +114,7 @@ void BufferCache

::RunGarbageCollector() { base_iterations = 32; break; case Settings::GCAggressiveness::Heavy: - base_ticks = std::max(1ULL, eviction_frames / 2); + base_ticks = std::max(1ULL, static_cast(eviction_frames / 2)); base_iterations = 64; break; case Settings::GCAggressiveness::Extreme: @@ -134,7 +134,7 @@ void BufferCache

::RunGarbageCollector() { LOG_WARNING(Render_Vulkan, "Buffer cache emergency GC: usage={}MB, limit={}MB", total_used_memory / 1_MiB, vram_limit_bytes / 1_MiB); } else if (aggressive_gc) { - ticks_to_destroy = std::max(1ULL, base_ticks / 2); + ticks_to_destroy = std::max(1ULL, static_cast(base_ticks / 2)); num_iterations = base_iterations * 2; } else { ticks_to_destroy = base_ticks; From 6253352e1e29f35c1e60c8b1779716bc3eb616b9 Mon Sep 17 00:00:00 2001 From: Collecting Date: Sun, 25 Jan 2026 13:42:55 +0100 Subject: [PATCH 3/3] fix(compiler): generate the vtable within settings.cpp Signed-off-by: Collecting --- src/common/settings.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/common/settings.cpp b/src/common/settings.cpp index a17e13bb9..02db52f5a 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -364,3 +364,9 @@ void SetConfiguringGlobal(bool is_global) { } } // namespace Settings + +#include "common/settings_setting.h" +#include "common/settings_enums.h" + +// generate the vtable for the linker +template class Settings::SwitchableSetting;