From b2b2e046696e9c187cd9d7d4e3e92dc521082fe5 Mon Sep 17 00:00:00 2001 From: gdk Date: Sat, 23 Nov 2019 02:17:22 -0300 Subject: Small optimizations on texture and sampler pool invalidation --- Ryujinx.Graphics.Gpu/State/GpuState.cs | 45 +++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 9 deletions(-) (limited to 'Ryujinx.Graphics.Gpu/State') diff --git a/Ryujinx.Graphics.Gpu/State/GpuState.cs b/Ryujinx.Graphics.Gpu/State/GpuState.cs index ecbaa004..bf7734dd 100644 --- a/Ryujinx.Graphics.Gpu/State/GpuState.cs +++ b/Ryujinx.Graphics.Gpu/State/GpuState.cs @@ -114,23 +114,50 @@ namespace Ryujinx.Graphics.Gpu.State _registers[(int)offset].Callback = callback; } - public bool QueryModified(params MethodOffset[] offsets) + public bool QueryModified(MethodOffset offset) { - bool modified = false; + bool modified = _registers[(int)offset].Modified; - for (int index = 0; index < offsets.Length; index++) - { - modified |= QueryModified(offsets[index]); - } + _registers[(int)offset].Modified = false; return modified; } - public bool QueryModified(MethodOffset offset) + public bool QueryModified(MethodOffset m1, MethodOffset m2) { - bool modified = _registers[(int)offset].Modified; + bool modified = _registers[(int)m1].Modified || + _registers[(int)m2].Modified; - _registers[(int)offset].Modified = false; + _registers[(int)m1].Modified = false; + _registers[(int)m2].Modified = false; + + return modified; + } + + public bool QueryModified(MethodOffset m1, MethodOffset m2, MethodOffset m3) + { + bool modified = _registers[(int)m1].Modified || + _registers[(int)m2].Modified || + _registers[(int)m3].Modified; + + _registers[(int)m1].Modified = false; + _registers[(int)m2].Modified = false; + _registers[(int)m3].Modified = false; + + return modified; + } + + public bool QueryModified(MethodOffset m1, MethodOffset m2, MethodOffset m3, MethodOffset m4) + { + bool modified = _registers[(int)m1].Modified || + _registers[(int)m2].Modified || + _registers[(int)m3].Modified || + _registers[(int)m4].Modified; + + _registers[(int)m1].Modified = false; + _registers[(int)m2].Modified = false; + _registers[(int)m3].Modified = false; + _registers[(int)m4].Modified = false; return modified; } -- cgit v1.2.3