forked from Mirror/Ryujinx
7fea26e97e
* Introduce new IGALCommand<T> interface and use it * Remove use of reflection on GAL multithreading * Unmanaged constraint
24 lines
965 B
C#
24 lines
965 B
C#
using Ryujinx.Graphics.GAL.Multithreading.Model;
|
|
using Ryujinx.Graphics.GAL.Multithreading.Resources;
|
|
using System.Linq;
|
|
|
|
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
|
|
{
|
|
struct SetRenderTargetsCommand : IGALCommand, IGALCommand<SetRenderTargetsCommand>
|
|
{
|
|
public CommandType CommandType => CommandType.SetRenderTargets;
|
|
private TableRef<ITexture[]> _colors;
|
|
private TableRef<ITexture> _depthStencil;
|
|
|
|
public void Set(TableRef<ITexture[]> colors, TableRef<ITexture> depthStencil)
|
|
{
|
|
_colors = colors;
|
|
_depthStencil = depthStencil;
|
|
}
|
|
|
|
public static void Run(ref SetRenderTargetsCommand command, ThreadedRenderer threaded, IRenderer renderer)
|
|
{
|
|
renderer.Pipeline.SetRenderTargets(command._colors.Get(threaded).Select(color => ((ThreadedTexture)color)?.Base).ToArray(), command._depthStencil.GetAs<ThreadedTexture>(threaded)?.Base);
|
|
}
|
|
}
|
|
}
|