mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-06-05 03:49:17 +00:00
Optimize texture cache code
This commit is contained in:
@@ -49,13 +49,9 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|||||||
private const int MinCountForDeletion = 32;
|
private const int MinCountForDeletion = 32;
|
||||||
private const int MaxCapacity = 2048;
|
private const int MaxCapacity = 2048;
|
||||||
private const ulong GiB = 1024 * 1024 * 1024;
|
private const ulong GiB = 1024 * 1024 * 1024;
|
||||||
private ulong MaxTextureSizeCapacity = 2UL * GiB;
|
private ulong MaxTextureSizeCapacity = 2 * GiB;
|
||||||
private const ulong MinTextureSizeCapacity = 512 * 1024 * 1024;
|
private const ulong MinTextureSizeCapacity = 512 * 1024 * 1024;
|
||||||
private const ulong DefaultTextureSizeCapacity = 1 * GiB;
|
private const ulong DefaultTextureSizeCapacity = 1 * GiB;
|
||||||
private const ulong TextureSizeCapacity4GiB = 2 * GiB;
|
|
||||||
private const ulong TextureSizeCapacity6GiB = 4 * GiB;
|
|
||||||
private const ulong TextureSizeCapacity8GiB = 6 * GiB;
|
|
||||||
private const ulong TextureSizeCapacity12GiB = 12 * GiB;
|
|
||||||
|
|
||||||
private const float MemoryScaleFactor = 0.50f;
|
private const float MemoryScaleFactor = 0.50f;
|
||||||
private ulong _maxCacheMemoryUsage = DefaultTextureSizeCapacity;
|
private ulong _maxCacheMemoryUsage = DefaultTextureSizeCapacity;
|
||||||
@@ -82,19 +78,14 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|||||||
{
|
{
|
||||||
ulong cpuMemorySizeGiB = cpuMemorySize / GiB;
|
ulong cpuMemorySizeGiB = cpuMemorySize / GiB;
|
||||||
ulong MaximumGpuMemoryGiB = context.Capabilities.MaximumGpuMemory / GiB;
|
ulong MaximumGpuMemoryGiB = context.Capabilities.MaximumGpuMemory / GiB;
|
||||||
|
ulong TextureSizeCapacity = cpuMemorySize - (2 * GiB);
|
||||||
|
|
||||||
if (context.Capabilities.MaximumGpuMemory == 0 || cpuMemorySizeGiB < 6 && MaximumGpuMemoryGiB < 6)
|
MaxTextureSizeCapacity =
|
||||||
{
|
context.Capabilities.MaximumGpuMemory == 0 || cpuMemorySizeGiB < 6 && MaximumGpuMemoryGiB < 6
|
||||||
MaxTextureSizeCapacity = DefaultTextureSizeCapacity;
|
? DefaultTextureSizeCapacity
|
||||||
}
|
: cpuMemorySizeGiB < 12
|
||||||
else
|
? TextureSizeCapacity
|
||||||
MaxTextureSizeCapacity = cpuMemorySizeGiB switch
|
: cpuMemorySize;
|
||||||
{
|
|
||||||
< 6 => TextureSizeCapacity4GiB,
|
|
||||||
6 => TextureSizeCapacity6GiB,
|
|
||||||
8 => TextureSizeCapacity8GiB,
|
|
||||||
_ => TextureSizeCapacity12GiB
|
|
||||||
};
|
|
||||||
|
|
||||||
ulong cacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor);
|
ulong cacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user