2021-07-11 13:20:40 -07:00
|
|
|
|
using Ryujinx.Graphics.Device;
|
2020-08-02 18:36:57 -07:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace Ryujinx.Graphics.Gpu.Engine.MME
|
|
|
|
|
{
|
2021-08-26 14:50:28 -07:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// FIFO word.
|
|
|
|
|
/// </summary>
|
2022-12-05 05:47:39 -08:00
|
|
|
|
readonly struct FifoWord
|
2021-08-26 14:50:28 -07:00
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// GPU virtual address where the word is located in memory.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public ulong GpuVa { get; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Word value.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int Word { get; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Creates a new FIFO word.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="gpuVa">GPU virtual address where the word is located in memory</param>
|
|
|
|
|
/// <param name="word">Word value</param>
|
|
|
|
|
public FifoWord(ulong gpuVa, int word)
|
|
|
|
|
{
|
|
|
|
|
GpuVa = gpuVa;
|
|
|
|
|
Word = word;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-08-02 18:36:57 -07:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Macro Execution Engine interface.
|
|
|
|
|
/// </summary>
|
|
|
|
|
interface IMacroEE
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Arguments FIFO.
|
|
|
|
|
/// </summary>
|
2021-08-26 14:50:28 -07:00
|
|
|
|
Queue<FifoWord> Fifo { get; }
|
2020-08-02 18:36:57 -07:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Should execute the GPU Macro code being passed.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="code">Code to be executed</param>
|
|
|
|
|
/// <param name="state">GPU state at the time of the call</param>
|
|
|
|
|
/// <param name="arg0">First argument to be passed to the GPU Macro</param>
|
2021-07-11 13:20:40 -07:00
|
|
|
|
void Execute(ReadOnlySpan<int> code, IDeviceState state, int arg0);
|
2020-08-02 18:36:57 -07:00
|
|
|
|
}
|
|
|
|
|
}
|