From be17d302ac1fc0286a52bcbb5ac00f093c350219 Mon Sep 17 00:00:00 2001 From: KeatonTheBot Date: Fri, 1 Nov 2024 20:40:32 -0500 Subject: [PATCH] Increase texture cache @ 4 GiB DRAM for higher VRAM cards --- .../Image/AutoDeleteCache.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 74967b190..5adb20669 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -48,10 +48,13 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; + private const ulong MiB = 1024 * 1024; private const ulong GiB = 1024 * 1024 * 1024; - private ulong MaxTextureSizeCapacity = 4UL * GiB; - private const ulong MinTextureSizeCapacity = 512 * 1024 * 1024; + private ulong MaxTextureSizeCapacity = 4 * GiB; + private const ulong MinTextureSizeCapacity = 512 * MiB; private const ulong DefaultTextureSizeCapacity = 1 * GiB; + private const ulong TextureSizeCapacity4GiBLow = 1536 * MiB; + private const ulong TextureSizeCapacity4GiBHigh = 2 * GiB; private const ulong TextureSizeCapacity6GiB = 4 * GiB; private const ulong TextureSizeCapacity8GiB = 6 * GiB; private const ulong TextureSizeCapacity12GiB = 12 * GiB; @@ -81,12 +84,22 @@ namespace Ryujinx.Graphics.Gpu.Image public void Initialize(GpuContext context, ulong cpuMemorySize) { var cpuMemorySizeGiB = cpuMemorySize / GiB; + var MaximumGpuMemory = (ulong)(context.Capabilities.MaximumGpuMemory); + var MaximumGpuMemoryGiB = (ulong)(context.Capabilities.MaximumGpuMemory) / GiB; - if (cpuMemorySizeGiB < 6 || context.Capabilities.MaximumGpuMemory == 0) + if (cpuMemorySizeGiB < 6 && MaximumGpuMemoryGiB < 8) { _maxCacheMemoryUsage = DefaultTextureSizeCapacity; return; } + else if (cpuMemorySizeGiB < 6 && MaximumGpuMemoryGiB >= 8 && MaximumGpuMemoryGiB < 12) + { + MaxTextureSizeCapacity = TextureSizeCapacity4GiBLow; + } + else if (cpuMemorySizeGiB < 6 && MaximumGpuMemoryGiB >= 12) + { + MaxTextureSizeCapacity = TextureSizeCapacity4GiBHigh; + } else if (cpuMemorySizeGiB == 6) { MaxTextureSizeCapacity = TextureSizeCapacity6GiB;