mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-08-20 07:38:42 +02:00
* Introduce new IGALCommand<T> interface and use it * Remove use of reflection on GAL multithreading * Unmanaged constraint
31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
using Ryujinx.Graphics.GAL.Multithreading.Model;
|
|
using Ryujinx.Graphics.GAL.Multithreading.Resources;
|
|
using System;
|
|
|
|
namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
|
|
{
|
|
struct ReportCounterCommand : IGALCommand, IGALCommand<ReportCounterCommand>
|
|
{
|
|
public CommandType CommandType => CommandType.ReportCounter;
|
|
private TableRef<ThreadedCounterEvent> _event;
|
|
private CounterType _type;
|
|
private TableRef<EventHandler<ulong>> _resultHandler;
|
|
private bool _hostReserved;
|
|
|
|
public void Set(TableRef<ThreadedCounterEvent> evt, CounterType type, TableRef<EventHandler<ulong>> resultHandler, bool hostReserved)
|
|
{
|
|
_event = evt;
|
|
_type = type;
|
|
_resultHandler = resultHandler;
|
|
_hostReserved = hostReserved;
|
|
}
|
|
|
|
public static void Run(ref ReportCounterCommand command, ThreadedRenderer threaded, IRenderer renderer)
|
|
{
|
|
ThreadedCounterEvent evt = command._event.Get(threaded);
|
|
|
|
evt.Create(renderer, command._type, command._resultHandler.Get(threaded), command._hostReserved);
|
|
}
|
|
}
|
|
}
|