forked from Mirror/Ryujinx
cd203e98f2
* Implement Geometry shaders * Add EmitVertex() and EndPrimitive() * Read output geometry data from header * Stub Vmad * Add Iadd_I32 * Stub Mov_S (S2R) * Stub Isberd * Change vertex index to gpr39 in Abuf * Add stub messages for consistency * Do not print input block when there is no attributes * Use GL_ARB_enhanced_layouts * Skip geometry shaders when there's no GL_ARB_enhanced_layouts * Address feedback * Address feedback
29 lines
No EOL
844 B
C#
29 lines
No EOL
844 B
C#
using System;
|
|
|
|
using static Ryujinx.Graphics.Gal.Shader.ShaderDecodeHelper;
|
|
|
|
namespace Ryujinx.Graphics.Gal.Shader
|
|
{
|
|
static partial class ShaderDecode
|
|
{
|
|
public static void Out_R(ShaderIrBlock Block, long OpCode)
|
|
{
|
|
//TODO: Those registers have to be used for something
|
|
ShaderIrOperGpr Gpr0 = GetOperGpr0(OpCode);
|
|
ShaderIrOperGpr Gpr8 = GetOperGpr8(OpCode);
|
|
ShaderIrOperGpr Gpr20 = GetOperGpr20(OpCode);
|
|
|
|
int Type = (int)((OpCode >> 39) & 3);
|
|
|
|
if ((Type & 1) != 0)
|
|
{
|
|
Block.AddNode(GetPredNode(new ShaderIrOp(ShaderIrInst.Emit), OpCode));
|
|
}
|
|
|
|
if ((Type & 2) != 0)
|
|
{
|
|
Block.AddNode(GetPredNode(new ShaderIrOp(ShaderIrInst.Cut), OpCode));
|
|
}
|
|
}
|
|
}
|
|
} |