aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs11
-rw-r--r--Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs3
-rw-r--r--Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs4
3 files changed, 11 insertions, 7 deletions
diff --git a/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs b/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs
index b4c5259c..a87655be 100644
--- a/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs
+++ b/Ryujinx.Graphics.OpenGL/Queries/BufferedQuery.cs
@@ -44,14 +44,17 @@ namespace Ryujinx.Graphics.OpenGL.Queries
GL.BeginQuery(_type, Query);
}
- public unsafe void End()
+ public unsafe void End(bool withResult)
{
GL.EndQuery(_type);
- GL.BindBuffer(BufferTarget.QueryBuffer, _buffer);
+ if (withResult)
+ {
+ GL.BindBuffer(BufferTarget.QueryBuffer, _buffer);
- Marshal.WriteInt64(_bufferMap, -1L);
- GL.GetQueryObject(Query, GetQueryObjectParam.QueryResult, (long*)0);
+ Marshal.WriteInt64(_bufferMap, -1L);
+ GL.GetQueryObject(Query, GetQueryObjectParam.QueryResult, (long*)0);
+ }
}
public bool TryGetResult(out long result)
diff --git a/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs b/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs
index a864a200..5984a7ca 100644
--- a/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs
+++ b/Ryujinx.Graphics.OpenGL/Queries/CounterQueue.cs
@@ -107,13 +107,14 @@ namespace Ryujinx.Graphics.OpenGL.Queries
if (draws > 0)
{
- _current.Complete();
+ _current.Complete(true);
_events.Enqueue(_current);
_current.OnResult += resultHandler;
}
else
{
+ _current.Complete(false);
_current.Dispose();
resultHandler(_current, 0);
}
diff --git a/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs b/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs
index e21ce55d..0e1025af 100644
--- a/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs
+++ b/Ryujinx.Graphics.OpenGL/Queries/CounterQueueEvent.cs
@@ -41,9 +41,9 @@ namespace Ryujinx.Graphics.OpenGL.Queries
ClearCounter = true;
}
- internal void Complete()
+ internal void Complete(bool withResult)
{
- _counter.End();
+ _counter.End(withResult);
}
internal bool TryConsume(ref ulong result, bool block, AutoResetEvent wakeSignal = null)