From f5e8d39e42e469c5518288ae5abd998a1f2a24d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sat, 18 Mar 2023 15:01:23 +0100 Subject: [PATCH] Force mipmapping on when drawing using replacement textures that contain mipmaps. --- GPU/Common/TextureCacheCommon.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/GPU/Common/TextureCacheCommon.cpp b/GPU/Common/TextureCacheCommon.cpp index 2b5624f47a..16fa289e9b 100644 --- a/GPU/Common/TextureCacheCommon.cpp +++ b/GPU/Common/TextureCacheCommon.cpp @@ -252,7 +252,15 @@ SamplerCacheKey TextureCacheCommon::GetSamplingParams(int maxLevel, const TexCac // Filtering overrides from replacements or settings. TextureFiltering forceFiltering = TEX_FILTER_AUTO; - bool useReplacerFiltering = entry && replacer_.Enabled() && entry->replacedTexture && entry->replacedTexture->ForceFiltering(&forceFiltering); + bool useReplacerFiltering = false; + if (entry && replacer_.Enabled() && entry->replacedTexture && entry->replacedTexture->State() == ReplacementState::ACTIVE) { + // If replacement textures have multiple mip levels, enforce mip filtering. + if (entry->replacedTexture->NumLevels() > 1) { + key.mipFilt = 1; + key.maxLevel = 9 * 256; + } + useReplacerFiltering = entry->replacedTexture->ForceFiltering(&forceFiltering); + } if (!useReplacerFiltering) { switch (g_Config.iTexFiltering) { case TEX_FILTER_AUTO: