From 17fb11ddb98e94aaf494eaf6002ab149c5d54000 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Fri, 6 Dec 2019 20:19:12 -0300 Subject: Fix wrong maximum id on sampler pool in some cases --- Ryujinx.Graphics.Gpu/Engine/Methods.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'Ryujinx.Graphics.Gpu/Engine/Methods.cs') diff --git a/Ryujinx.Graphics.Gpu/Engine/Methods.cs b/Ryujinx.Graphics.Gpu/Engine/Methods.cs index 5388c86d..29360cf9 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Methods.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Methods.cs @@ -123,7 +123,7 @@ namespace Ryujinx.Graphics.Gpu.Engine } // Pools. - if (state.QueryModified(MethodOffset.SamplerPoolState)) + if (state.QueryModified(MethodOffset.SamplerPoolState, MethodOffset.SamplerIndex)) { UpdateSamplerPoolState(state); } @@ -422,11 +422,16 @@ namespace Ryujinx.Graphics.Gpu.Engine private void UpdateSamplerPoolState(GpuState state) { + var texturePool = state.Get(MethodOffset.TexturePoolState); var samplerPool = state.Get(MethodOffset.SamplerPoolState); var samplerIndex = state.Get(MethodOffset.SamplerIndex); - _textureManager.SetGraphicsSamplerPool(samplerPool.Address.Pack(), samplerPool.MaximumId, samplerIndex); + int maximumId = samplerIndex == SamplerIndex.ViaHeaderIndex + ? texturePool.MaximumId + : samplerPool.MaximumId; + + _textureManager.SetGraphicsSamplerPool(samplerPool.Address.Pack(), maximumId, samplerIndex); } private void UpdateTexturePoolState(GpuState state) -- cgit v1.2.3