From cd48576f5846aa89a36bfc833e9de5dde9627aed Mon Sep 17 00:00:00 2001 From: riperiperi Date: Mon, 4 May 2020 03:24:59 +0100 Subject: Implement Counter Queue and Partial Host Conditional Rendering (#1167) * Implementation of query queue and host conditional rendering * Resolve some comments. * Use overloads instead of passing object. * Wake the consumer threads when incrementing syncpoints. Also, do a busy loop when awaiting the counter for a blocking flush, rather than potentially sleeping the thread. * Ensure there's a command between begin and end query. --- Ryujinx.Graphics.OpenGL/Renderer.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'Ryujinx.Graphics.OpenGL/Renderer.cs') diff --git a/Ryujinx.Graphics.OpenGL/Renderer.cs b/Ryujinx.Graphics.OpenGL/Renderer.cs index 3f718345..b3ae8c33 100644 --- a/Ryujinx.Graphics.OpenGL/Renderer.cs +++ b/Ryujinx.Graphics.OpenGL/Renderer.cs @@ -1,7 +1,9 @@ using OpenTK.Graphics.OpenGL; using Ryujinx.Common.Logging; using Ryujinx.Graphics.GAL; +using Ryujinx.Graphics.OpenGL.Queries; using Ryujinx.Graphics.Shader; +using System; namespace Ryujinx.Graphics.OpenGL { @@ -66,9 +68,14 @@ namespace Ryujinx.Graphics.OpenGL HwCapabilities.MaxSupportedAnisotropy); } - public ulong GetCounter(CounterType type) + public void UpdateCounters() { - return _counters.GetCounter(type); + _counters.Update(); + } + + public ICounterEvent ReportCounter(CounterType type, EventHandler resultHandler) + { + return _counters.QueueReport(type, resultHandler); } public void Initialize() @@ -89,7 +96,7 @@ namespace Ryujinx.Graphics.OpenGL public void ResetCounter(CounterType type) { - _counters.ResetCounter(type); + _counters.QueueReset(type); } public void Dispose() @@ -97,6 +104,7 @@ namespace Ryujinx.Graphics.OpenGL TextureCopy.Dispose(); _pipeline.Dispose(); _window.Dispose(); + _counters.Dispose(); } } } -- cgit v1.2.3