aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.OpenGL/Renderer.cs
diff options
context:
space:
mode:
authorriperiperi <rhy3756547@hotmail.com>2020-05-04 03:24:59 +0100
committerGitHub <noreply@github.com>2020-05-04 12:24:59 +1000
commitcd48576f5846aa89a36bfc833e9de5dde9627aed (patch)
tree5bf04a43725cf7fdc098cde59856798a67b839e0 /Ryujinx.Graphics.OpenGL/Renderer.cs
parent651a07c6c2a3e89c059d56e916c45e1881d56abc (diff)
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.
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/Renderer.cs')
-rw-r--r--Ryujinx.Graphics.OpenGL/Renderer.cs14
1 files changed, 11 insertions, 3 deletions
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<ulong> 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();
}
}
}