瀏覽代碼

GPU: Stub the shader SYNC and DEPBAR instructions.

It is unknown at this moment if we actually need to do something with these instructions or if the GLSL compiler takes care of that for us.
Subv 8 年之前
父節點
當前提交
77cfe4f027
共有 2 個文件被更改,包括 12 次插入0 次删除
  1. 5 0
      src/video_core/engines/shader_bytecode.h
  2. 7 0
      src/video_core/renderer_opengl/gl_shader_decompiler.cpp

+ 5 - 0
src/video_core/engines/shader_bytecode.h

@@ -438,6 +438,8 @@ public:
     enum class Id {
         KIL,
         SSY,
+        SYNC,
+        DEPBAR,
         BFE_C,
         BFE_R,
         BFE_IMM,
@@ -534,6 +536,7 @@ public:
         Shift,
         Ffma,
         Flow,
+        Synch,
         Memory,
         FloatSet,
         FloatSetPredicate,
@@ -638,6 +641,8 @@ private:
             INST("111000110011----", Id::KIL, Type::Flow, "KIL"),
             INST("111000101001----", Id::SSY, Type::Flow, "SSY"),
             INST("111000100100----", Id::BRA, Type::Flow, "BRA"),
+            INST("1111000011110---", Id::DEPBAR, Type::Synch, "DEPBAR"),
+            INST("1111000011111---", Id::SYNC, Type::Synch, "SYNC"),
             INST("1110111111011---", Id::LD_A, Type::Memory, "LD_A"),
             INST("1110111110010---", Id::LD_C, Type::Memory, "LD_C"),
             INST("1110111111110---", Id::ST_A, Type::Memory, "ST_A"),

+ 7 - 0
src/video_core/renderer_opengl/gl_shader_decompiler.cpp

@@ -1599,6 +1599,13 @@ private:
                 // can ignore this when generating GLSL code.
                 break;
             }
+            case OpCode::Id::DEPBAR:
+            case OpCode::Id::SYNC: {
+                // TODO(Subv): Find out if we actually have to care about these instructions or if
+                // the GLSL compiler takes care of that for us.
+                LOG_WARNING(HW_GPU, "DEPBAR/SYNC instruction is stubbed");
+                break;
+            }
             default: {
                 LOG_CRITICAL(HW_GPU, "Unhandled instruction: {}", opcode->GetName());
                 UNREACHABLE();