Implement NOP and stub DEPBAR shader instruction

This commit is contained in:
EliseZeroTwo 2020-03-25 16:49:40 +01:00
parent 1586450a38
commit e3128158bc
4 changed files with 40 additions and 0 deletions

View file

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Ryujinx.Graphics.Shader.Decoders
{
class OpCodeDepbar
{
public OpCodeDepbar(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
{
}
}
}

View file

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Ryujinx.Graphics.Shader.Decoders
{
class OpCodeNop
{
public OpCodeNop(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
{
}
}
}

View file

@ -48,6 +48,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
Set("0100110001110x", InstEmit.Dadd, typeof(OpCodeFArithCbuf));
Set("0011100x01110x", InstEmit.Dadd, typeof(OpCodeDArithImm));
Set("0101110001110x", InstEmit.Dadd, typeof(OpCodeFArithReg));
Set("1111000011110x", InstEmit.Depbar, typeof(OpCodeDepbar));
Set("010010110111xx", InstEmit.Dfma, typeof(OpCodeFArithCbuf));
Set("0011011x0111xx", InstEmit.Dfma, typeof(OpCodeDArithImm));
Set("010100110111xx", InstEmit.Dfma, typeof(OpCodeFArithRegCbuf));
@ -161,6 +162,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
Set("000000010000xx", InstEmit.Mov, typeof(OpCodeAluImm32));
Set("0101110010011x", InstEmit.Mov, typeof(OpCodeAluReg));
Set("0101000010000x", InstEmit.Mufu, typeof(OpCodeFArith));
Set("1010000101100x", InstEmit.Nop, typeof(OpCodeNop));
Set("1111101111100x", InstEmit.Out, typeof(OpCode));
Set("111000101010xx", InstEmit.Pbk, typeof(OpCodePush));
Set("0100110000001x", InstEmit.Popc, typeof(OpCodeAluCbuf));

View file

@ -51,6 +51,11 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
}
public static void Depbar(EmitterContext context)
{
return;
}
public static void Exit(EmitterContext context)
{
OpCodeExit op = (OpCodeExit)context.CurrOp;
@ -68,6 +73,11 @@ namespace Ryujinx.Graphics.Shader.Instructions
context.Discard();
}
public static void Nop(EmitterContext context)
{
return;
}
public static void Pbk(EmitterContext context)
{
EmitPbkOrSsy(context);