From ae11117cecda4d78506da001e1cc3311f23c42ba Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Wed, 11 Sep 2024 13:17:21 +0300 Subject: [PATCH 01/19] Add Texture Size Capacity and 8GB Dram Build --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 2 +- src/Ryujinx.Gtk3/UI/MainWindow.cs | 2 +- src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs | 10 +++++----- src/Ryujinx/AppHost.cs | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 5e66a3b54..3954efced 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -46,7 +46,7 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; - private const ulong MaxTextureSizeCapacity = 1024 * 1024 * 1024; // MB; + private const ulong MaxTextureSizeCapacity = 2048L * 1024 * 1024; // MB; private readonly LinkedList _textures; private ulong _totalSize; diff --git a/src/Ryujinx.Gtk3/UI/MainWindow.cs b/src/Ryujinx.Gtk3/UI/MainWindow.cs index d1ca6ce6a..e26cce761 100644 --- a/src/Ryujinx.Gtk3/UI/MainWindow.cs +++ b/src/Ryujinx.Gtk3/UI/MainWindow.cs @@ -639,7 +639,7 @@ namespace Ryujinx.UI } var memoryConfiguration = ConfigurationState.Instance.System.ExpandRam.Value - ? HLE.MemoryConfiguration.MemoryConfiguration6GiB + ? HLE.MemoryConfiguration.MemoryConfiguration8GiB : HLE.MemoryConfiguration.MemoryConfiguration4GiB; IntegrityCheckLevel fsIntegrityCheckLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None; diff --git a/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs b/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs index 10f0b6f78..9642e4e70 100644 --- a/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs +++ b/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs @@ -26,10 +26,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Common { MemoryArrange.MemoryArrange4GiB or MemoryArrange.MemoryArrange4GiBSystemDev or - MemoryArrange.MemoryArrange6GiBAppletDev => 3285 * MiB, + MemoryArrange.MemoryArrange6GiBAppletDev => 2193 * MiB, MemoryArrange.MemoryArrange4GiBAppletDev => 2048 * MiB, - MemoryArrange.MemoryArrange6GiB or - MemoryArrange.MemoryArrange8GiB => 4916 * MiB, + MemoryArrange.MemoryArrange6GiB => 4916 * MiB, + MemoryArrange.MemoryArrange8GiB => 6964 * MiB, _ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."), }; } @@ -42,8 +42,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Common MemoryArrange.MemoryArrange4GiBAppletDev => 1554 * MiB, MemoryArrange.MemoryArrange4GiBSystemDev => 448 * MiB, MemoryArrange.MemoryArrange6GiB => 562 * MiB, - MemoryArrange.MemoryArrange6GiBAppletDev or - MemoryArrange.MemoryArrange8GiB => 2193 * MiB, + MemoryArrange.MemoryArrange6GiBAppletDev => 2193 * MiB, + MemoryArrange.MemoryArrange8GiB => 562 * MiB, _ => throw new ArgumentException($"Invalid memory arrange \"{arrange}\"."), }; } diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs index 43e7a79eb..872c93c31 100644 --- a/src/Ryujinx/AppHost.cs +++ b/src/Ryujinx/AppHost.cs @@ -775,7 +775,7 @@ namespace Ryujinx.Ava Logger.Info?.PrintMsg(LogClass.Gpu, $"Backend Threading ({threadingMode}): {isGALThreaded}"); // Initialize Configuration. - var memoryConfiguration = ConfigurationState.Instance.System.ExpandRam.Value ? MemoryConfiguration.MemoryConfiguration6GiB : MemoryConfiguration.MemoryConfiguration4GiB; + var memoryConfiguration = ConfigurationState.Instance.System.ExpandRam.Value ? MemoryConfiguration.MemoryConfiguration8GiB : MemoryConfiguration.MemoryConfiguration4GiB; HLEConfiguration configuration = new(VirtualFileSystem, _viewModel.LibHacHorizonManager, From 0326aa6082b707bedc12feeabaaff26898f5861c Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Wed, 11 Sep 2024 15:33:38 +0300 Subject: [PATCH 02/19] Update AutoDeleteCache.cs --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 3954efced..96e8ee625 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -46,7 +46,7 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; - private const ulong MaxTextureSizeCapacity = 2048L * 1024 * 1024; // MB; + private const ulong MaxTextureSizeCapacity = 4096L * 1024 * 1024; // MB; private readonly LinkedList _textures; private ulong _totalSize; From ab038062578f5c3def63fa4c75cf42697b463a60 Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Thu, 12 Sep 2024 07:32:49 +0300 Subject: [PATCH 03/19] Dynamic Texture Cache (WIP) --- src/Ryujinx.Graphics.GAL/Capabilities.cs | 6 +- .../Image/AutoDeleteCache.cs | 29 +- .../Image/TextureCache.cs | 2 +- src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs | 3 +- src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 25 +- src/src.sln | 259 ++++++++++++++++++ 6 files changed, 316 insertions(+), 8 deletions(-) create mode 100644 src/src.sln diff --git a/src/Ryujinx.Graphics.GAL/Capabilities.cs b/src/Ryujinx.Graphics.GAL/Capabilities.cs index a5c6eb5c8..1eec80e51 100644 --- a/src/Ryujinx.Graphics.GAL/Capabilities.cs +++ b/src/Ryujinx.Graphics.GAL/Capabilities.cs @@ -71,6 +71,8 @@ namespace Ryujinx.Graphics.GAL public readonly int GatherBiasPrecision; + public readonly ulong MaximumGpuMemory; + public Capabilities( TargetApi api, string vendorName, @@ -131,7 +133,8 @@ namespace Ryujinx.Graphics.GAL int shaderSubgroupSize, int storageBufferOffsetAlignment, int textureBufferOffsetAlignment, - int gatherBiasPrecision) + int gatherBiasPrecision, + ulong maximumGpuMemory) { Api = api; VendorName = vendorName; @@ -193,6 +196,7 @@ namespace Ryujinx.Graphics.GAL StorageBufferOffsetAlignment = storageBufferOffsetAlignment; TextureBufferOffsetAlignment = textureBufferOffsetAlignment; GatherBiasPrecision = gatherBiasPrecision; + MaximumGpuMemory = maximumGpuMemory; } } } diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 96e8ee625..fa3dc32d3 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -1,5 +1,7 @@ +using Ryujinx.Graphics.GAL; using System.Collections; using System.Collections.Generic; +using Ryujinx.Common.Logging; namespace Ryujinx.Graphics.Gpu.Image { @@ -46,7 +48,6 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; - private const ulong MaxTextureSizeCapacity = 4096L * 1024 * 1024; // MB; private readonly LinkedList _textures; private ulong _totalSize; @@ -55,12 +56,32 @@ namespace Ryujinx.Graphics.Gpu.Image private HashSet _shortCache; private readonly Dictionary _shortCacheLookup; + + private readonly GpuContext _context; + + /// + /// Gets MaxTextureCapacity dynamically. + /// + private ulong GetMaxTextureCapacity() { + Capabilities capabilities = _context.Capabilities; + + if (capabilities.MaximumGpuMemory <= 0) + { + return 1024L * 1024 * 1024; + } + else + { + return capabilities.MaximumGpuMemory / 2; + } + } /// /// Creates a new instance of the automatic deletion cache. /// - public AutoDeleteCache() + public AutoDeleteCache(GpuContext _Context) { + _context = _Context; + _textures = new LinkedList(); _shortCacheBuilder = new HashSet(); @@ -85,7 +106,7 @@ namespace Ryujinx.Graphics.Gpu.Image texture.CacheNode = _textures.AddLast(texture); if (_textures.Count > MaxCapacity || - (_totalSize > MaxTextureSizeCapacity && _textures.Count >= MinCountForDeletion)) + (_totalSize > GetMaxTextureCapacity() && _textures.Count >= MinCountForDeletion)) { RemoveLeastUsedTexture(); } @@ -110,7 +131,7 @@ namespace Ryujinx.Graphics.Gpu.Image _textures.AddLast(texture.CacheNode); } - if (_totalSize > MaxTextureSizeCapacity && _textures.Count >= MinCountForDeletion) + if (_totalSize > GetMaxTextureCapacity() && _textures.Count >= MinCountForDeletion) { RemoveLeastUsedTexture(); } diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs index b6fa842e3..5352d188a 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs @@ -65,7 +65,7 @@ namespace Ryujinx.Graphics.Gpu.Image _textureOverlaps = new Texture[OverlapsBufferInitialCapacity]; _overlapInfo = new OverlapInfo[OverlapsBufferInitialCapacity]; - _cache = new AutoDeleteCache(); + _cache = new AutoDeleteCache(_context); } /// diff --git a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs index ba9cd45c6..c30e0937a 100644 --- a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs +++ b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs @@ -202,7 +202,8 @@ namespace Ryujinx.Graphics.OpenGL shaderSubgroupSize: Constants.MaxSubgroupSize, storageBufferOffsetAlignment: HwCapabilities.StorageBufferOffsetAlignment, textureBufferOffsetAlignment: HwCapabilities.TextureBufferOffsetAlignment, - gatherBiasPrecision: intelWindows || amdWindows ? 8 : 0); // Precision is 8 for these vendors on Vulkan. + gatherBiasPrecision: intelWindows || amdWindows ? 8 : 0, // Precision is 8 for these vendors on Vulkan. + maximumGpuMemory : 0); } public void SetBufferData(BufferHandle buffer, int offset, ReadOnlySpan data) diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 33e41ab48..134841d86 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -781,7 +781,30 @@ namespace Ryujinx.Graphics.Vulkan shaderSubgroupSize: (int)Capabilities.SubgroupSize, storageBufferOffsetAlignment: (int)limits.MinStorageBufferOffsetAlignment, textureBufferOffsetAlignment: (int)limits.MinTexelBufferOffsetAlignment, - gatherBiasPrecision: IsIntelWindows || IsAmdWindows ? (int)Capabilities.SubTexelPrecisionBits : 0); + gatherBiasPrecision: IsIntelWindows || IsAmdWindows ? (int)Capabilities.SubTexelPrecisionBits : 0, + maximumGpuMemory: GetTotalGPUMemory()); + } + + public ulong GetTotalGPUMemory(){ + + ulong totalMemory = 0; + + PhysicalDeviceMemoryProperties memoryProperties; + + Api.GetPhysicalDeviceMemoryProperties(_physicalDevice.PhysicalDevice, out memoryProperties); + + for (int i = 0; i < memoryProperties.MemoryHeapCount; i++) + { + var heap = memoryProperties.MemoryHeaps[i]; + if ((heap.Flags & MemoryHeapFlags.DeviceLocalBit) == MemoryHeapFlags.DeviceLocalBit) + { + totalMemory += heap.Size; + } + } + + Logger.Info?.Print(LogClass.Gpu, $"GPU Memory: {totalMemory / (1024 * 1024)} MB"); + + return totalMemory; } public HardwareInfo GetHardwareInfo() diff --git a/src/src.sln b/src/src.sln new file mode 100644 index 000000000..dd3321b7f --- /dev/null +++ b/src/src.sln @@ -0,0 +1,259 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ARMeilleure", "ARMeilleure\ARMeilleure.csproj", "{BE631816-E41F-49FC-9CBD-93CCA5FB6454}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx", "Ryujinx\Ryujinx.csproj", "{0E045C62-10EE-40ED-AA27-8111A74A4E56}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio", "Ryujinx.Audio\Ryujinx.Audio.csproj", "{062DFCCD-4025-4668-B4D3-BB390A3B545B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.OpenAL", "Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj", "{A55A879C-2024-4021-933A-9C06A04684CD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.SDL2", "Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj", "{29B56566-813F-4E51-A4EA-A5E5476AE700}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.SoundIo", "Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj", "{244C9E21-9F8B-414E-B6B4-3205DF1D575D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Common", "Ryujinx.Common\Ryujinx.Common.csproj", "{AFAE9648-32DC-49DC-9F3C-B54EC2685E83}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Cpu", "Ryujinx.Cpu\Ryujinx.Cpu.csproj", "{14ADB075-BCCE-4714-80F8-4467A9A638E2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Device", "Ryujinx.Graphics.Device\Ryujinx.Graphics.Device.csproj", "{76B465C1-3892-434C-8E74-46375CE271B7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.GAL", "Ryujinx.Graphics.GAL\Ryujinx.Graphics.GAL.csproj", "{69E343BF-88F0-48B6-9425-093C3014D448}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Gpu", "Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj", "{613D8AF9-E8B7-472A-9D6B-36E24D15E012}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Host1x", "Ryujinx.Graphics.Host1x\Ryujinx.Graphics.Host1x.csproj", "{8ED88F92-245A-4C9D-9244-70065E4D8DB3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec", "Ryujinx.Graphics.Nvdec\Ryujinx.Graphics.Nvdec.csproj", "{8E5533FC-9CC4-4C00-9A97-686F61B20395}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec.FFmpeg", "Ryujinx.Graphics.Nvdec.FFmpeg\Ryujinx.Graphics.Nvdec.FFmpeg.csproj", "{D11F7275-16E9-4944-80E7-AF97F5CB719E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec.Vp9", "Ryujinx.Graphics.Nvdec.Vp9\Ryujinx.Graphics.Nvdec.Vp9.csproj", "{1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.OpenGL", "Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj", "{6EEC7CDE-C440-4A9F-9480-758AAF17EB79}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Shader", "Ryujinx.Graphics.Shader\Ryujinx.Graphics.Shader.csproj", "{3621AABE-4325-4399-A632-A598450B097A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Texture", "Ryujinx.Graphics.Texture\Ryujinx.Graphics.Texture.csproj", "{7B112D73-204F-4639-BECF-FDE04127D7AA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Vic", "Ryujinx.Graphics.Vic\Ryujinx.Graphics.Vic.csproj", "{966B18AF-05D4-4701-8471-D9693DE84A93}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Video", "Ryujinx.Graphics.Video\Ryujinx.Graphics.Video.csproj", "{3CCB3BCE-7E54-4821-9C90-4A2EA054A615}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Vulkan", "Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj", "{93608327-4A6B-47CA-AB30-894D68D09FED}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Gtk3", "Ryujinx.Gtk3\Ryujinx.Gtk3.csproj", "{E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Headless.SDL2", "Ryujinx.Headless.SDL2\Ryujinx.Headless.SDL2.csproj", "{0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE", "Ryujinx.HLE\Ryujinx.HLE.csproj", "{CF14B6B2-5853-43F6-A153-07D0425AF061}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE.Generators", "Ryujinx.HLE.Generators\Ryujinx.HLE.Generators.csproj", "{8EA2A119-436A-4187-96F3-A49F40ECF730}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon", "Ryujinx.Horizon\Ryujinx.Horizon.csproj", "{30112B27-8194-4B8A-9289-D4364A472107}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Common", "Ryujinx.Horizon.Common\Ryujinx.Horizon.Common.csproj", "{A892DFA6-74FE-449B-8E18-552C252C8A0E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Generators", "Ryujinx.Horizon.Generators\Ryujinx.Horizon.Generators.csproj", "{339A51F8-72F9-4914-9EB3-BB4C8E839A27}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Kernel.Generators", "Ryujinx.Horizon.Kernel.Generators\Ryujinx.Horizon.Kernel.Generators.csproj", "{7CF25E42-232E-407C-B6CD-A1FDD4715762}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Input", "Ryujinx.Input\Ryujinx.Input.csproj", "{9328882E-408C-48C9-B349-48047E585C96}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Input.SDL2", "Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj", "{C9AC0437-8CBE-4054-82A4-4B4549F6595C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Memory", "Ryujinx.Memory\Ryujinx.Memory.csproj", "{B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.SDL2.Common", "Ryujinx.SDL2.Common\Ryujinx.SDL2.Common.csproj", "{38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.ShaderTools", "Ryujinx.ShaderTools\Ryujinx.ShaderTools.csproj", "{D41DB78A-E9BE-4B59-9851-915F870E2361}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests", "Ryujinx.Tests\Ryujinx.Tests.csproj", "{BD2FB9DF-791C-4271-BE51-B817902563BB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests.Memory", "Ryujinx.Tests.Memory\Ryujinx.Tests.Memory.csproj", "{76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests.Unicorn", "Ryujinx.Tests.Unicorn\Ryujinx.Tests.Unicorn.csproj", "{1A1D6863-A647-4406-BCA6-7997ABCD58C9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.UI.Common", "Ryujinx.UI.Common\Ryujinx.UI.Common.csproj", "{32D1A1D2-3D64-4B46-9512-364FFD43E30F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.UI.LocaleGenerator", "Ryujinx.UI.LocaleGenerator\Ryujinx.UI.LocaleGenerator.csproj", "{E9BBF6D2-C791-4ACA-A009-1290DB78A270}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spv.Generator", "Spv.Generator\Spv.Generator.csproj", "{63485F0E-A78F-44ED-9C46-CB542CC4AB02}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Release|Any CPU.Build.0 = Release|Any CPU + {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Release|Any CPU.Build.0 = Release|Any CPU + {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Release|Any CPU.Build.0 = Release|Any CPU + {A55A879C-2024-4021-933A-9C06A04684CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A55A879C-2024-4021-933A-9C06A04684CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A55A879C-2024-4021-933A-9C06A04684CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A55A879C-2024-4021-933A-9C06A04684CD}.Release|Any CPU.Build.0 = Release|Any CPU + {29B56566-813F-4E51-A4EA-A5E5476AE700}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29B56566-813F-4E51-A4EA-A5E5476AE700}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29B56566-813F-4E51-A4EA-A5E5476AE700}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29B56566-813F-4E51-A4EA-A5E5476AE700}.Release|Any CPU.Build.0 = Release|Any CPU + {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Release|Any CPU.Build.0 = Release|Any CPU + {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Release|Any CPU.Build.0 = Release|Any CPU + {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Release|Any CPU.Build.0 = Release|Any CPU + {76B465C1-3892-434C-8E74-46375CE271B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76B465C1-3892-434C-8E74-46375CE271B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76B465C1-3892-434C-8E74-46375CE271B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76B465C1-3892-434C-8E74-46375CE271B7}.Release|Any CPU.Build.0 = Release|Any CPU + {69E343BF-88F0-48B6-9425-093C3014D448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {69E343BF-88F0-48B6-9425-093C3014D448}.Debug|Any CPU.Build.0 = Debug|Any CPU + {69E343BF-88F0-48B6-9425-093C3014D448}.Release|Any CPU.ActiveCfg = Release|Any CPU + {69E343BF-88F0-48B6-9425-093C3014D448}.Release|Any CPU.Build.0 = Release|Any CPU + {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Debug|Any CPU.Build.0 = Debug|Any CPU + {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Release|Any CPU.ActiveCfg = Release|Any CPU + {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Release|Any CPU.Build.0 = Release|Any CPU + {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Release|Any CPU.Build.0 = Release|Any CPU + {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Release|Any CPU.Build.0 = Release|Any CPU + {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Release|Any CPU.Build.0 = Release|Any CPU + {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Release|Any CPU.Build.0 = Release|Any CPU + {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Release|Any CPU.Build.0 = Release|Any CPU + {3621AABE-4325-4399-A632-A598450B097A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3621AABE-4325-4399-A632-A598450B097A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3621AABE-4325-4399-A632-A598450B097A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3621AABE-4325-4399-A632-A598450B097A}.Release|Any CPU.Build.0 = Release|Any CPU + {7B112D73-204F-4639-BECF-FDE04127D7AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B112D73-204F-4639-BECF-FDE04127D7AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B112D73-204F-4639-BECF-FDE04127D7AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B112D73-204F-4639-BECF-FDE04127D7AA}.Release|Any CPU.Build.0 = Release|Any CPU + {966B18AF-05D4-4701-8471-D9693DE84A93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {966B18AF-05D4-4701-8471-D9693DE84A93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {966B18AF-05D4-4701-8471-D9693DE84A93}.Release|Any CPU.ActiveCfg = Release|Any CPU + {966B18AF-05D4-4701-8471-D9693DE84A93}.Release|Any CPU.Build.0 = Release|Any CPU + {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Release|Any CPU.Build.0 = Release|Any CPU + {93608327-4A6B-47CA-AB30-894D68D09FED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93608327-4A6B-47CA-AB30-894D68D09FED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93608327-4A6B-47CA-AB30-894D68D09FED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93608327-4A6B-47CA-AB30-894D68D09FED}.Release|Any CPU.Build.0 = Release|Any CPU + {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Release|Any CPU.Build.0 = Release|Any CPU + {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Release|Any CPU.Build.0 = Release|Any CPU + {CF14B6B2-5853-43F6-A153-07D0425AF061}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF14B6B2-5853-43F6-A153-07D0425AF061}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF14B6B2-5853-43F6-A153-07D0425AF061}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF14B6B2-5853-43F6-A153-07D0425AF061}.Release|Any CPU.Build.0 = Release|Any CPU + {8EA2A119-436A-4187-96F3-A49F40ECF730}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8EA2A119-436A-4187-96F3-A49F40ECF730}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EA2A119-436A-4187-96F3-A49F40ECF730}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8EA2A119-436A-4187-96F3-A49F40ECF730}.Release|Any CPU.Build.0 = Release|Any CPU + {30112B27-8194-4B8A-9289-D4364A472107}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30112B27-8194-4B8A-9289-D4364A472107}.Debug|Any CPU.Build.0 = Debug|Any CPU + {30112B27-8194-4B8A-9289-D4364A472107}.Release|Any CPU.ActiveCfg = Release|Any CPU + {30112B27-8194-4B8A-9289-D4364A472107}.Release|Any CPU.Build.0 = Release|Any CPU + {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Release|Any CPU.Build.0 = Release|Any CPU + {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Release|Any CPU.ActiveCfg = Release|Any CPU + {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Release|Any CPU.Build.0 = Release|Any CPU + {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Release|Any CPU.Build.0 = Release|Any CPU + {9328882E-408C-48C9-B349-48047E585C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9328882E-408C-48C9-B349-48047E585C96}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9328882E-408C-48C9-B349-48047E585C96}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9328882E-408C-48C9-B349-48047E585C96}.Release|Any CPU.Build.0 = Release|Any CPU + {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Release|Any CPU.Build.0 = Release|Any CPU + {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Release|Any CPU.Build.0 = Release|Any CPU + {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Release|Any CPU.Build.0 = Release|Any CPU + {D41DB78A-E9BE-4B59-9851-915F870E2361}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D41DB78A-E9BE-4B59-9851-915F870E2361}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D41DB78A-E9BE-4B59-9851-915F870E2361}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D41DB78A-E9BE-4B59-9851-915F870E2361}.Release|Any CPU.Build.0 = Release|Any CPU + {BD2FB9DF-791C-4271-BE51-B817902563BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD2FB9DF-791C-4271-BE51-B817902563BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD2FB9DF-791C-4271-BE51-B817902563BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD2FB9DF-791C-4271-BE51-B817902563BB}.Release|Any CPU.Build.0 = Release|Any CPU + {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Release|Any CPU.Build.0 = Release|Any CPU + {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Release|Any CPU.Build.0 = Release|Any CPU + {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Release|Any CPU.Build.0 = Release|Any CPU + {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Release|Any CPU.Build.0 = Release|Any CPU + {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Release|Any CPU.ActiveCfg = Release|Any CPU + {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {29E801EA-ED90-434D-9BB8-A2C75AD76615} + EndGlobalSection +EndGlobal From 2f5be2c6ee2913c11474f2605cf65da864e8add6 Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Thu, 12 Sep 2024 07:49:44 +0300 Subject: [PATCH 04/19] Change to float Multiplier, in-case it needs fine-tuning. --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index fa3dc32d3..b3a35b843 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -60,7 +60,7 @@ namespace Ryujinx.Graphics.Gpu.Image private readonly GpuContext _context; /// - /// Gets MaxTextureCapacity dynamically. + /// Gets MaxTextureCapacity Dynamically /// private ulong GetMaxTextureCapacity() { Capabilities capabilities = _context.Capabilities; @@ -71,7 +71,7 @@ namespace Ryujinx.Graphics.Gpu.Image } else { - return capabilities.MaximumGpuMemory / 2; + return (ulong)(capabilities.MaximumGpuMemory * 0.50); } } From 1e6f4999953bc451658b19b7b66655523fb6403f Mon Sep 17 00:00:00 2001 From: MaxLastBreath <136052075+MaxLastBreath@users.noreply.github.com> Date: Thu, 12 Sep 2024 08:03:42 +0300 Subject: [PATCH 05/19] Delete src/src.sln --- src/src.sln | 259 ---------------------------------------------------- 1 file changed, 259 deletions(-) delete mode 100644 src/src.sln diff --git a/src/src.sln b/src/src.sln deleted file mode 100644 index dd3321b7f..000000000 --- a/src/src.sln +++ /dev/null @@ -1,259 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.5.002.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ARMeilleure", "ARMeilleure\ARMeilleure.csproj", "{BE631816-E41F-49FC-9CBD-93CCA5FB6454}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx", "Ryujinx\Ryujinx.csproj", "{0E045C62-10EE-40ED-AA27-8111A74A4E56}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio", "Ryujinx.Audio\Ryujinx.Audio.csproj", "{062DFCCD-4025-4668-B4D3-BB390A3B545B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.OpenAL", "Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj", "{A55A879C-2024-4021-933A-9C06A04684CD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.SDL2", "Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj", "{29B56566-813F-4E51-A4EA-A5E5476AE700}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.SoundIo", "Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj", "{244C9E21-9F8B-414E-B6B4-3205DF1D575D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Common", "Ryujinx.Common\Ryujinx.Common.csproj", "{AFAE9648-32DC-49DC-9F3C-B54EC2685E83}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Cpu", "Ryujinx.Cpu\Ryujinx.Cpu.csproj", "{14ADB075-BCCE-4714-80F8-4467A9A638E2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Device", "Ryujinx.Graphics.Device\Ryujinx.Graphics.Device.csproj", "{76B465C1-3892-434C-8E74-46375CE271B7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.GAL", "Ryujinx.Graphics.GAL\Ryujinx.Graphics.GAL.csproj", "{69E343BF-88F0-48B6-9425-093C3014D448}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Gpu", "Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj", "{613D8AF9-E8B7-472A-9D6B-36E24D15E012}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Host1x", "Ryujinx.Graphics.Host1x\Ryujinx.Graphics.Host1x.csproj", "{8ED88F92-245A-4C9D-9244-70065E4D8DB3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec", "Ryujinx.Graphics.Nvdec\Ryujinx.Graphics.Nvdec.csproj", "{8E5533FC-9CC4-4C00-9A97-686F61B20395}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec.FFmpeg", "Ryujinx.Graphics.Nvdec.FFmpeg\Ryujinx.Graphics.Nvdec.FFmpeg.csproj", "{D11F7275-16E9-4944-80E7-AF97F5CB719E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec.Vp9", "Ryujinx.Graphics.Nvdec.Vp9\Ryujinx.Graphics.Nvdec.Vp9.csproj", "{1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.OpenGL", "Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj", "{6EEC7CDE-C440-4A9F-9480-758AAF17EB79}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Shader", "Ryujinx.Graphics.Shader\Ryujinx.Graphics.Shader.csproj", "{3621AABE-4325-4399-A632-A598450B097A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Texture", "Ryujinx.Graphics.Texture\Ryujinx.Graphics.Texture.csproj", "{7B112D73-204F-4639-BECF-FDE04127D7AA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Vic", "Ryujinx.Graphics.Vic\Ryujinx.Graphics.Vic.csproj", "{966B18AF-05D4-4701-8471-D9693DE84A93}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Video", "Ryujinx.Graphics.Video\Ryujinx.Graphics.Video.csproj", "{3CCB3BCE-7E54-4821-9C90-4A2EA054A615}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Vulkan", "Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj", "{93608327-4A6B-47CA-AB30-894D68D09FED}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Gtk3", "Ryujinx.Gtk3\Ryujinx.Gtk3.csproj", "{E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Headless.SDL2", "Ryujinx.Headless.SDL2\Ryujinx.Headless.SDL2.csproj", "{0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE", "Ryujinx.HLE\Ryujinx.HLE.csproj", "{CF14B6B2-5853-43F6-A153-07D0425AF061}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE.Generators", "Ryujinx.HLE.Generators\Ryujinx.HLE.Generators.csproj", "{8EA2A119-436A-4187-96F3-A49F40ECF730}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon", "Ryujinx.Horizon\Ryujinx.Horizon.csproj", "{30112B27-8194-4B8A-9289-D4364A472107}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Common", "Ryujinx.Horizon.Common\Ryujinx.Horizon.Common.csproj", "{A892DFA6-74FE-449B-8E18-552C252C8A0E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Generators", "Ryujinx.Horizon.Generators\Ryujinx.Horizon.Generators.csproj", "{339A51F8-72F9-4914-9EB3-BB4C8E839A27}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Kernel.Generators", "Ryujinx.Horizon.Kernel.Generators\Ryujinx.Horizon.Kernel.Generators.csproj", "{7CF25E42-232E-407C-B6CD-A1FDD4715762}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Input", "Ryujinx.Input\Ryujinx.Input.csproj", "{9328882E-408C-48C9-B349-48047E585C96}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Input.SDL2", "Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj", "{C9AC0437-8CBE-4054-82A4-4B4549F6595C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Memory", "Ryujinx.Memory\Ryujinx.Memory.csproj", "{B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.SDL2.Common", "Ryujinx.SDL2.Common\Ryujinx.SDL2.Common.csproj", "{38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.ShaderTools", "Ryujinx.ShaderTools\Ryujinx.ShaderTools.csproj", "{D41DB78A-E9BE-4B59-9851-915F870E2361}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests", "Ryujinx.Tests\Ryujinx.Tests.csproj", "{BD2FB9DF-791C-4271-BE51-B817902563BB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests.Memory", "Ryujinx.Tests.Memory\Ryujinx.Tests.Memory.csproj", "{76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests.Unicorn", "Ryujinx.Tests.Unicorn\Ryujinx.Tests.Unicorn.csproj", "{1A1D6863-A647-4406-BCA6-7997ABCD58C9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.UI.Common", "Ryujinx.UI.Common\Ryujinx.UI.Common.csproj", "{32D1A1D2-3D64-4B46-9512-364FFD43E30F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.UI.LocaleGenerator", "Ryujinx.UI.LocaleGenerator\Ryujinx.UI.LocaleGenerator.csproj", "{E9BBF6D2-C791-4ACA-A009-1290DB78A270}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spv.Generator", "Spv.Generator\Spv.Generator.csproj", "{63485F0E-A78F-44ED-9C46-CB542CC4AB02}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BE631816-E41F-49FC-9CBD-93CCA5FB6454}.Release|Any CPU.Build.0 = Release|Any CPU - {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0E045C62-10EE-40ED-AA27-8111A74A4E56}.Release|Any CPU.Build.0 = Release|Any CPU - {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {062DFCCD-4025-4668-B4D3-BB390A3B545B}.Release|Any CPU.Build.0 = Release|Any CPU - {A55A879C-2024-4021-933A-9C06A04684CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A55A879C-2024-4021-933A-9C06A04684CD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A55A879C-2024-4021-933A-9C06A04684CD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A55A879C-2024-4021-933A-9C06A04684CD}.Release|Any CPU.Build.0 = Release|Any CPU - {29B56566-813F-4E51-A4EA-A5E5476AE700}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {29B56566-813F-4E51-A4EA-A5E5476AE700}.Debug|Any CPU.Build.0 = Debug|Any CPU - {29B56566-813F-4E51-A4EA-A5E5476AE700}.Release|Any CPU.ActiveCfg = Release|Any CPU - {29B56566-813F-4E51-A4EA-A5E5476AE700}.Release|Any CPU.Build.0 = Release|Any CPU - {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {244C9E21-9F8B-414E-B6B4-3205DF1D575D}.Release|Any CPU.Build.0 = Release|Any CPU - {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AFAE9648-32DC-49DC-9F3C-B54EC2685E83}.Release|Any CPU.Build.0 = Release|Any CPU - {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {14ADB075-BCCE-4714-80F8-4467A9A638E2}.Release|Any CPU.Build.0 = Release|Any CPU - {76B465C1-3892-434C-8E74-46375CE271B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {76B465C1-3892-434C-8E74-46375CE271B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {76B465C1-3892-434C-8E74-46375CE271B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {76B465C1-3892-434C-8E74-46375CE271B7}.Release|Any CPU.Build.0 = Release|Any CPU - {69E343BF-88F0-48B6-9425-093C3014D448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69E343BF-88F0-48B6-9425-093C3014D448}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69E343BF-88F0-48B6-9425-093C3014D448}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69E343BF-88F0-48B6-9425-093C3014D448}.Release|Any CPU.Build.0 = Release|Any CPU - {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Debug|Any CPU.Build.0 = Debug|Any CPU - {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Release|Any CPU.ActiveCfg = Release|Any CPU - {613D8AF9-E8B7-472A-9D6B-36E24D15E012}.Release|Any CPU.Build.0 = Release|Any CPU - {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8ED88F92-245A-4C9D-9244-70065E4D8DB3}.Release|Any CPU.Build.0 = Release|Any CPU - {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E5533FC-9CC4-4C00-9A97-686F61B20395}.Release|Any CPU.Build.0 = Release|Any CPU - {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D11F7275-16E9-4944-80E7-AF97F5CB719E}.Release|Any CPU.Build.0 = Release|Any CPU - {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1CDA4236-CD6C-46B5-8D4E-4AF7B9142D23}.Release|Any CPU.Build.0 = Release|Any CPU - {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6EEC7CDE-C440-4A9F-9480-758AAF17EB79}.Release|Any CPU.Build.0 = Release|Any CPU - {3621AABE-4325-4399-A632-A598450B097A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3621AABE-4325-4399-A632-A598450B097A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3621AABE-4325-4399-A632-A598450B097A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3621AABE-4325-4399-A632-A598450B097A}.Release|Any CPU.Build.0 = Release|Any CPU - {7B112D73-204F-4639-BECF-FDE04127D7AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7B112D73-204F-4639-BECF-FDE04127D7AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7B112D73-204F-4639-BECF-FDE04127D7AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7B112D73-204F-4639-BECF-FDE04127D7AA}.Release|Any CPU.Build.0 = Release|Any CPU - {966B18AF-05D4-4701-8471-D9693DE84A93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {966B18AF-05D4-4701-8471-D9693DE84A93}.Debug|Any CPU.Build.0 = Debug|Any CPU - {966B18AF-05D4-4701-8471-D9693DE84A93}.Release|Any CPU.ActiveCfg = Release|Any CPU - {966B18AF-05D4-4701-8471-D9693DE84A93}.Release|Any CPU.Build.0 = Release|Any CPU - {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3CCB3BCE-7E54-4821-9C90-4A2EA054A615}.Release|Any CPU.Build.0 = Release|Any CPU - {93608327-4A6B-47CA-AB30-894D68D09FED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {93608327-4A6B-47CA-AB30-894D68D09FED}.Debug|Any CPU.Build.0 = Debug|Any CPU - {93608327-4A6B-47CA-AB30-894D68D09FED}.Release|Any CPU.ActiveCfg = Release|Any CPU - {93608327-4A6B-47CA-AB30-894D68D09FED}.Release|Any CPU.Build.0 = Release|Any CPU - {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E7998D97-F1FD-4BE1-AF4B-F4D0DCAE3E2A}.Release|Any CPU.Build.0 = Release|Any CPU - {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0BEA8C4C-09C8-42E7-BB6C-716AD62259F0}.Release|Any CPU.Build.0 = Release|Any CPU - {CF14B6B2-5853-43F6-A153-07D0425AF061}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CF14B6B2-5853-43F6-A153-07D0425AF061}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CF14B6B2-5853-43F6-A153-07D0425AF061}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CF14B6B2-5853-43F6-A153-07D0425AF061}.Release|Any CPU.Build.0 = Release|Any CPU - {8EA2A119-436A-4187-96F3-A49F40ECF730}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EA2A119-436A-4187-96F3-A49F40ECF730}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EA2A119-436A-4187-96F3-A49F40ECF730}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EA2A119-436A-4187-96F3-A49F40ECF730}.Release|Any CPU.Build.0 = Release|Any CPU - {30112B27-8194-4B8A-9289-D4364A472107}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {30112B27-8194-4B8A-9289-D4364A472107}.Debug|Any CPU.Build.0 = Debug|Any CPU - {30112B27-8194-4B8A-9289-D4364A472107}.Release|Any CPU.ActiveCfg = Release|Any CPU - {30112B27-8194-4B8A-9289-D4364A472107}.Release|Any CPU.Build.0 = Release|Any CPU - {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A892DFA6-74FE-449B-8E18-552C252C8A0E}.Release|Any CPU.Build.0 = Release|Any CPU - {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Debug|Any CPU.Build.0 = Debug|Any CPU - {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Release|Any CPU.ActiveCfg = Release|Any CPU - {339A51F8-72F9-4914-9EB3-BB4C8E839A27}.Release|Any CPU.Build.0 = Release|Any CPU - {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7CF25E42-232E-407C-B6CD-A1FDD4715762}.Release|Any CPU.Build.0 = Release|Any CPU - {9328882E-408C-48C9-B349-48047E585C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9328882E-408C-48C9-B349-48047E585C96}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9328882E-408C-48C9-B349-48047E585C96}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9328882E-408C-48C9-B349-48047E585C96}.Release|Any CPU.Build.0 = Release|Any CPU - {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C9AC0437-8CBE-4054-82A4-4B4549F6595C}.Release|Any CPU.Build.0 = Release|Any CPU - {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B1FFD8B1-07F3-4F7F-9CAE-4FB600E7BA3B}.Release|Any CPU.Build.0 = Release|Any CPU - {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {38BDC98E-DDCF-4D7A-AD4A-E00120908B1D}.Release|Any CPU.Build.0 = Release|Any CPU - {D41DB78A-E9BE-4B59-9851-915F870E2361}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D41DB78A-E9BE-4B59-9851-915F870E2361}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D41DB78A-E9BE-4B59-9851-915F870E2361}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D41DB78A-E9BE-4B59-9851-915F870E2361}.Release|Any CPU.Build.0 = Release|Any CPU - {BD2FB9DF-791C-4271-BE51-B817902563BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BD2FB9DF-791C-4271-BE51-B817902563BB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BD2FB9DF-791C-4271-BE51-B817902563BB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BD2FB9DF-791C-4271-BE51-B817902563BB}.Release|Any CPU.Build.0 = Release|Any CPU - {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {76AFA1E6-3EED-4390-969A-C6BAA6D0E08E}.Release|Any CPU.Build.0 = Release|Any CPU - {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1A1D6863-A647-4406-BCA6-7997ABCD58C9}.Release|Any CPU.Build.0 = Release|Any CPU - {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {32D1A1D2-3D64-4B46-9512-364FFD43E30F}.Release|Any CPU.Build.0 = Release|Any CPU - {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E9BBF6D2-C791-4ACA-A009-1290DB78A270}.Release|Any CPU.Build.0 = Release|Any CPU - {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63485F0E-A78F-44ED-9C46-CB542CC4AB02}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {29E801EA-ED90-434D-9BB8-A2C75AD76615} - EndGlobalSection -EndGlobal From 099cc21a81ebcfcdc28f6349867b8bf5c806d959 Mon Sep 17 00:00:00 2001 From: MaxLastBreath <136052075+MaxLastBreath@users.noreply.github.com> Date: Thu, 12 Sep 2024 11:37:23 +0300 Subject: [PATCH 06/19] Update AutoDeleteCache.cs --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index b3a35b843..cd761a681 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -78,9 +78,9 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// Creates a new instance of the automatic deletion cache. /// - public AutoDeleteCache(GpuContext _Context) + public AutoDeleteCache(GpuContext context) { - _context = _Context; + _context = context; _textures = new LinkedList(); From 3db4cbb9a920879e0296caede4b93bd20c3ec892 Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Thu, 12 Sep 2024 19:22:48 +0300 Subject: [PATCH 07/19] Format --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 8 ++++---- src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs | 2 +- src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index b3a35b843..d877e3fb0 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -1,7 +1,6 @@ using Ryujinx.Graphics.GAL; using System.Collections; using System.Collections.Generic; -using Ryujinx.Common.Logging; namespace Ryujinx.Graphics.Gpu.Image { @@ -56,19 +55,20 @@ namespace Ryujinx.Graphics.Gpu.Image private HashSet _shortCache; private readonly Dictionary _shortCacheLookup; - + private readonly GpuContext _context; /// /// Gets MaxTextureCapacity Dynamically /// - private ulong GetMaxTextureCapacity() { + private ulong GetMaxTextureCapacity() + { Capabilities capabilities = _context.Capabilities; if (capabilities.MaximumGpuMemory <= 0) { return 1024L * 1024 * 1024; - } + } else { return (ulong)(capabilities.MaximumGpuMemory * 0.50); diff --git a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs index c30e0937a..9fcdf1ad7 100644 --- a/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs +++ b/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs @@ -203,7 +203,7 @@ namespace Ryujinx.Graphics.OpenGL storageBufferOffsetAlignment: HwCapabilities.StorageBufferOffsetAlignment, textureBufferOffsetAlignment: HwCapabilities.TextureBufferOffsetAlignment, gatherBiasPrecision: intelWindows || amdWindows ? 8 : 0, // Precision is 8 for these vendors on Vulkan. - maximumGpuMemory : 0); + maximumGpuMemory: 0); } public void SetBufferData(BufferHandle buffer, int offset, ReadOnlySpan data) diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 134841d86..61dddc82b 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -785,7 +785,8 @@ namespace Ryujinx.Graphics.Vulkan maximumGpuMemory: GetTotalGPUMemory()); } - public ulong GetTotalGPUMemory(){ + public ulong GetTotalGPUMemory() + { ulong totalMemory = 0; From cad45cfb56cf9de4ecd2d6dc33d43002ef7d80ca Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Thu, 12 Sep 2024 19:36:52 +0300 Subject: [PATCH 08/19] Fix Formatting --- src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 61dddc82b..476973742 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -790,9 +790,8 @@ namespace Ryujinx.Graphics.Vulkan ulong totalMemory = 0; - PhysicalDeviceMemoryProperties memoryProperties; - Api.GetPhysicalDeviceMemoryProperties(_physicalDevice.PhysicalDevice, out memoryProperties); + Api.GetPhysicalDeviceMemoryProperties(_physicalDevice.PhysicalDevice, out PhysicalDeviceMemoryProperties memoryProperties); for (int i = 0; i < memoryProperties.MemoryHeapCount; i++) { From 08d4bbaa91c7f42fd99a8ec49575a686612e094d Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Sat, 14 Sep 2024 18:54:58 +0300 Subject: [PATCH 09/19] Add DefaultTextureSizeCapacity and MemoryScaleFactor - Also remove redundant New Lines --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 14 +++++++------- src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 2 -- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index ffa1da2ff..e9477e469 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -47,6 +47,8 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; + private const ulong DefaultTextureSizeCapacity = 1024 * 1024 * 1024; + private const float MemoryScaleFactor = 0.50f; private readonly LinkedList _textures; private ulong _totalSize; @@ -63,16 +65,14 @@ namespace Ryujinx.Graphics.Gpu.Image /// private ulong GetMaxTextureCapacity() { - Capabilities capabilities = _context.Capabilities; + ulong maxMemory = _context.Capabilities.MaximumGpuMemory; - if (capabilities.MaximumGpuMemory <= 0) + if (maxMemory > 0) { - return 1024L * 1024 * 1024; - } - else - { - return (ulong)(capabilities.MaximumGpuMemory * 0.50); + return (ulong)(maxMemory * MemoryScaleFactor); } + + return DefaultTextureSizeCapacity; } /// diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 476973742..6d0b860f9 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -787,10 +787,8 @@ namespace Ryujinx.Graphics.Vulkan public ulong GetTotalGPUMemory() { - ulong totalMemory = 0; - Api.GetPhysicalDeviceMemoryProperties(_physicalDevice.PhysicalDevice, out PhysicalDeviceMemoryProperties memoryProperties); for (int i = 0; i < memoryProperties.MemoryHeapCount; i++) From bc062fd90eeb9739aa33f82485f55755c0b9f319 Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Tue, 17 Sep 2024 16:38:53 +0300 Subject: [PATCH 10/19] Fix 4GB dram crashing --- src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs | 4 ++-- src/Ryujinx.Headless.SDL2/Program.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs b/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs index 9642e4e70..e27f9e99f 100644 --- a/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs +++ b/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs @@ -26,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Common { MemoryArrange.MemoryArrange4GiB or MemoryArrange.MemoryArrange4GiBSystemDev or - MemoryArrange.MemoryArrange6GiBAppletDev => 2193 * MiB, + MemoryArrange.MemoryArrange6GiBAppletDev => 3285 * MiB, MemoryArrange.MemoryArrange4GiBAppletDev => 2048 * MiB, MemoryArrange.MemoryArrange6GiB => 4916 * MiB, MemoryArrange.MemoryArrange8GiB => 6964 * MiB, @@ -75,4 +75,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Common }; } } -} +} \ No newline at end of file diff --git a/src/Ryujinx.Headless.SDL2/Program.cs b/src/Ryujinx.Headless.SDL2/Program.cs index 07995dbdd..4ee271203 100644 --- a/src/Ryujinx.Headless.SDL2/Program.cs +++ b/src/Ryujinx.Headless.SDL2/Program.cs @@ -562,7 +562,7 @@ namespace Ryujinx.Headless.SDL2 _userChannelPersistence, renderer, new SDL2HardwareDeviceDriver(), - options.ExpandRAM ? MemoryConfiguration.MemoryConfiguration6GiB : MemoryConfiguration.MemoryConfiguration4GiB, + options.ExpandRAM ? MemoryConfiguration.MemoryConfiguration8GiB : MemoryConfiguration.MemoryConfiguration4GiB, window, options.SystemLanguage, options.SystemRegion, From f5389089a8973ed0a7a31d1114e54f3950140733 Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Tue, 17 Sep 2024 16:42:37 +0300 Subject: [PATCH 11/19] Format newline --- src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs b/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs index e27f9e99f..3f194e0ed 100644 --- a/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs +++ b/src/Ryujinx.HLE/HOS/Kernel/Common/KSystemControl.cs @@ -75,4 +75,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Common }; } } -} \ No newline at end of file +} From 9e2a35246c48dafa7edf2eb321ad3b8db7ea488a Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Wed, 18 Sep 2024 02:37:39 +0300 Subject: [PATCH 12/19] Refractor - Added Initialize() function to TextureCache and AutoDeleteCache - Removed GetMaxTextureCapacity() function and instead added _maxCacheMemoryUsage - Added private const MaxTextureSizeCapacity to AutoDelete Cache - Added TextureCache.Initialize() to MemoryManager in order to fetch MaxGpuMemory at the right time. - Moved and Changed Logger.Info for Gpu Memory to Logger.Notice and Moved it to PrintGpuInformation function. - Opted to use a ternary operator for the Initialize function, I think it looks cleaner than bunch of if statements. --- .../Image/AutoDeleteCache.cs | 30 ++++++++----------- .../Image/TextureCache.cs | 7 ++++- .../Memory/MemoryManager.cs | 2 ++ src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 3 +- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index e9477e469..bcff9aa0b 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -1,4 +1,4 @@ -using Ryujinx.Graphics.GAL; +using Ryujinx.Common.Logging; using System.Collections; using System.Collections.Generic; @@ -47,8 +47,10 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; - private const ulong DefaultTextureSizeCapacity = 1024 * 1024 * 1024; + private const ulong DefaultTextureSizeCapacity = 1UL * 1024 * 1024 * 1024; + private const ulong MaxTextureSizeCapacity = 4UL * 1024 * 1024 * 1024; private const float MemoryScaleFactor = 0.50f; + private ulong _maxCacheMemoryUsage = 0; private readonly LinkedList _textures; private ulong _totalSize; @@ -58,30 +60,24 @@ namespace Ryujinx.Graphics.Gpu.Image private readonly Dictionary _shortCacheLookup; - private readonly GpuContext _context; - /// /// Gets MaxTextureCapacity Dynamically /// - private ulong GetMaxTextureCapacity() + public void Initialize(GpuContext context) { - ulong maxMemory = _context.Capabilities.MaximumGpuMemory; + var maxMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); - if (maxMemory > 0) - { - return (ulong)(maxMemory * MemoryScaleFactor); - } - - return DefaultTextureSizeCapacity; + _maxCacheMemoryUsage = maxMemory == 0 ? + DefaultTextureSizeCapacity : + maxMemory > MaxTextureSizeCapacity ? + MaxTextureSizeCapacity : maxMemory; } /// /// Creates a new instance of the automatic deletion cache. /// - public AutoDeleteCache(GpuContext context) + public AutoDeleteCache() { - _context = context; - _textures = new LinkedList(); _shortCacheBuilder = new HashSet(); @@ -106,7 +102,7 @@ namespace Ryujinx.Graphics.Gpu.Image texture.CacheNode = _textures.AddLast(texture); if (_textures.Count > MaxCapacity || - (_totalSize > GetMaxTextureCapacity() && _textures.Count >= MinCountForDeletion)) + (_totalSize > _maxCacheMemoryUsage && _textures.Count >= MinCountForDeletion)) { RemoveLeastUsedTexture(); } @@ -131,7 +127,7 @@ namespace Ryujinx.Graphics.Gpu.Image _textures.AddLast(texture.CacheNode); } - if (_totalSize > GetMaxTextureCapacity() && _textures.Count >= MinCountForDeletion) + if (_totalSize > _maxCacheMemoryUsage && _textures.Count >= MinCountForDeletion) { RemoveLeastUsedTexture(); } diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs index 5352d188a..2fd8a5cd8 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs @@ -65,7 +65,12 @@ namespace Ryujinx.Graphics.Gpu.Image _textureOverlaps = new Texture[OverlapsBufferInitialCapacity]; _overlapInfo = new OverlapInfo[OverlapsBufferInitialCapacity]; - _cache = new AutoDeleteCache(_context); + _cache = new AutoDeleteCache(); + } + + public void Initialize() + { + _cache.Initialize(_context); } /// diff --git a/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs b/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs index 59a940a4f..d1065431d 100644 --- a/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs +++ b/src/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs @@ -1,4 +1,5 @@ using Ryujinx.Common.Memory; +using Ryujinx.Graphics.Gpu.Image; using Ryujinx.Memory; using Ryujinx.Memory.Range; using System; @@ -64,6 +65,7 @@ namespace Ryujinx.Graphics.Gpu.Memory MemoryUnmapped += Physical.BufferCache.MemoryUnmappedHandler; MemoryUnmapped += VirtualRangeCache.MemoryUnmappedHandler; MemoryUnmapped += CounterCache.MemoryUnmappedHandler; + Physical.TextureCache.Initialize(); } /// diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 6d0b860f9..57207bed0 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -800,8 +800,6 @@ namespace Ryujinx.Graphics.Vulkan } } - Logger.Info?.Print(LogClass.Gpu, $"GPU Memory: {totalMemory / (1024 * 1024)} MB"); - return totalMemory; } @@ -886,6 +884,7 @@ namespace Ryujinx.Graphics.Vulkan private void PrintGpuInformation() { Logger.Notice.Print(LogClass.Gpu, $"{GpuVendor} {GpuRenderer} ({GpuVersion})"); + Logger.Notice.Print(LogClass.Gpu, $"GPU Memory: {GetTotalGPUMemory() / (1024 * 1024)} MiB"); } public void Initialize(GraphicsDebugLevel logLevel) From cfa3e8a7b5ac91b2250841502d66b15e115f4606 Mon Sep 17 00:00:00 2001 From: MaxLastBreath <136052075+MaxLastBreath@users.noreply.github.com> Date: Wed, 18 Sep 2024 03:20:10 +0300 Subject: [PATCH 13/19] Update src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs Co-authored-by: gdkchan --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index bcff9aa0b..20fb2f47e 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -61,7 +61,7 @@ namespace Ryujinx.Graphics.Gpu.Image private readonly Dictionary _shortCacheLookup; /// - /// Gets MaxTextureCapacity Dynamically + /// Initializes the cache, setting the maximum texture capacity for the specified GPU context. /// public void Initialize(GpuContext context) { From 116f07cbb197f7d6deab58e6fec840542b1cb9a2 Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Wed, 18 Sep 2024 03:43:22 +0300 Subject: [PATCH 14/19] maxMemory to CacheMemory, use Clamp instead of Ternary. Changed MinTextureCapacity 1GiB to 512 MiB --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 11 ++++------- src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs | 3 +++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 20fb2f47e..62cefd8ea 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -1,4 +1,4 @@ -using Ryujinx.Common.Logging; +using System; using System.Collections; using System.Collections.Generic; @@ -47,7 +47,7 @@ namespace Ryujinx.Graphics.Gpu.Image { private const int MinCountForDeletion = 32; private const int MaxCapacity = 2048; - private const ulong DefaultTextureSizeCapacity = 1UL * 1024 * 1024 * 1024; + private const ulong MinTextureSizeCapacity = 512 * 1024 * 1024; private const ulong MaxTextureSizeCapacity = 4UL * 1024 * 1024 * 1024; private const float MemoryScaleFactor = 0.50f; private ulong _maxCacheMemoryUsage = 0; @@ -65,12 +65,9 @@ namespace Ryujinx.Graphics.Gpu.Image /// public void Initialize(GpuContext context) { - var maxMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); + var CacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); - _maxCacheMemoryUsage = maxMemory == 0 ? - DefaultTextureSizeCapacity : - maxMemory > MaxTextureSizeCapacity ? - MaxTextureSizeCapacity : maxMemory; + _maxCacheMemoryUsage = Math.Clamp(CacheMemory, MinTextureSizeCapacity, MaxTextureSizeCapacity); } /// diff --git a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs index 85a1da326..1587e2018 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs @@ -68,6 +68,9 @@ namespace Ryujinx.Graphics.Gpu.Image _cache = new AutoDeleteCache(); } + /// + /// Initializes the cache, setting the maximum texture capacity for the specified GPU context. + /// public void Initialize() { _cache.Initialize(_context); From 0ffb971806ce6a64afbe114fd313e242d11881dd Mon Sep 17 00:00:00 2001 From: MaxLastBreath <136052075+MaxLastBreath@users.noreply.github.com> Date: Wed, 18 Sep 2024 22:21:31 +0300 Subject: [PATCH 15/19] Update src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs Co-authored-by: gdkchan --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 62cefd8ea..4159a8786 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -63,6 +63,7 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// Initializes the cache, setting the maximum texture capacity for the specified GPU context. /// + The GPU context that the cache belongs to public void Initialize(GpuContext context) { var CacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); From 453630e0dc1bccb74ae047d7dde2f20a8f94d613 Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Wed, 18 Sep 2024 22:27:30 +0300 Subject: [PATCH 16/19] Format comment --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 4159a8786..2c0204f47 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -63,7 +63,7 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// Initializes the cache, setting the maximum texture capacity for the specified GPU context. /// - The GPU context that the cache belongs to + The GPU context that the cache belongs to public void Initialize(GpuContext context) { var CacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); From 527d16983123325142201920fc5c0825a3ff5bee Mon Sep 17 00:00:00 2001 From: MaxLastBreath Date: Wed, 18 Sep 2024 22:36:40 +0300 Subject: [PATCH 17/19] comment context --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 2c0204f47..1a75921b8 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -63,7 +63,7 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// Initializes the cache, setting the maximum texture capacity for the specified GPU context. /// - The GPU context that the cache belongs to + /// The GPU context that the cache belongs to public void Initialize(GpuContext context) { var CacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); From 43a994f5d2e6727faff8216996d1f5c3de40af53 Mon Sep 17 00:00:00 2001 From: MaxLastBreath <136052075+MaxLastBreath@users.noreply.github.com> Date: Wed, 18 Sep 2024 23:51:14 +0300 Subject: [PATCH 18/19] Update src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs Co-authored-by: gdkchan --- src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs index 1a75921b8..6aa72d15c 100644 --- a/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs +++ b/src/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs @@ -63,7 +63,7 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// Initializes the cache, setting the maximum texture capacity for the specified GPU context. /// - /// The GPU context that the cache belongs to + /// The GPU context that the cache belongs to public void Initialize(GpuContext context) { var CacheMemory = (ulong)(context.Capabilities.MaximumGpuMemory * MemoryScaleFactor); From 330e1270acd8d4def2e49432c29b32845365fddf Mon Sep 17 00:00:00 2001 From: MaxLastBreath <136052075+MaxLastBreath@users.noreply.github.com> Date: Thu, 19 Sep 2024 02:03:46 +0300 Subject: [PATCH 19/19] Update src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs Co-authored-by: gdkchan --- src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 57207bed0..0faaec82a 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -785,7 +785,7 @@ namespace Ryujinx.Graphics.Vulkan maximumGpuMemory: GetTotalGPUMemory()); } - public ulong GetTotalGPUMemory() + private ulong GetTotalGPUMemory() { ulong totalMemory = 0;