From 06bf25521ff3ab2ad82eb49cde2bb6f90324caa2 Mon Sep 17 00:00:00 2001
From: Elise <elise@headpat.services>
Date: Thu, 26 Mar 2020 23:30:16 +0100
Subject: [PATCH] Implement NOP and stub DEPBAR shader instructions (#1041)

* Implement NOP and stub DEPBAR shader instruction

* Fix a few issues and formatting stuff

* Remove OpCodeNop/Depbar and use OpCode instead

* Fix NOP shader instruction opcode

* Fix formatting
---
 Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs      | 2 ++
 Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs b/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs
index 4579d65090..e71c31867e 100644
--- a/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs
+++ b/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs
@@ -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(OpCode));
             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("0101000010110x", InstEmit.Nop,     typeof(OpCode));
             Set("1111101111100x", InstEmit.Out,     typeof(OpCode));
             Set("111000101010xx", InstEmit.Pbk,     typeof(OpCodePush));
             Set("0100110000001x", InstEmit.Popc,    typeof(OpCodeAluCbuf));
diff --git a/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs b/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
index 4b058a8446..e34f2988e5 100644
--- a/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
+++ b/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
@@ -51,6 +51,8 @@ namespace Ryujinx.Graphics.Shader.Instructions
             }
         }
 
+        public static void Depbar(EmitterContext context) { }
+
         public static void Exit(EmitterContext context)
         {
             OpCodeExit op = (OpCodeExit)context.CurrOp;
@@ -68,6 +70,8 @@ namespace Ryujinx.Graphics.Shader.Instructions
             context.Discard();
         }
 
+        public static void Nop(EmitterContext context) { }
+
         public static void Pbk(EmitterContext context)
         {
             EmitPbkOrSsy(context);