Fix wrong maximum id on sampler pool in some cases

This commit is contained in:
gdkchan 2019-12-06 20:19:12 -03:00 committed by Thog
parent cb171f6ebf
commit 17fb11ddb9
6 changed files with 14 additions and 10 deletions

View file

@ -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<PoolState>(MethodOffset.TexturePoolState);
var samplerPool = state.Get<PoolState>(MethodOffset.SamplerPoolState);
var samplerIndex = state.Get<SamplerIndex>(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)