From 948002635f86aac18e5fbafb5b0bb4315cd3569d Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Mon, 20 Aug 2018 21:53:00 -0400
Subject: [PATCH 1/3] gl_shader_decompiler: Implement TextureCube for TEX.

---
 src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index b7b3fbc17f..9e0813a727 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -1525,6 +1525,14 @@ private:
                     coord = "vec3 coords = vec3(" + x + ", " + y + ", " + z + ");";
                     break;
                 }
+                case Tegra::Shader::TextureType::TextureCube: {
+                    std::string x = regs.GetRegisterAsFloat(instr.gpr8);
+                    std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);
+                    std::string z = regs.GetRegisterAsFloat(instr.gpr8.Value() + 2);
+                    ASSERT(instr.gpr20.Value() == Register::ZeroIndex);
+                    coord = "vec3 coords = vec3(" + x + ", " + y + ", " + z + ");";
+                    break;
+                }
                 default:
                     LOG_CRITICAL(HW_GPU, "Unhandled texture type {}",
                                  static_cast<u32>(instr.tex.texture_type.Value()));

From 16db8b9d9f8ef7f9c4d9f7c2dc7628389b42c14d Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Mon, 20 Aug 2018 21:53:18 -0400
Subject: [PATCH 2/3] gl_shader_decompiler: Implement Texture3D for TEXS.

---
 src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 9e0813a727..34db387875 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -1578,6 +1578,13 @@ private:
                     }
                     break;
                 }
+                case Tegra::Shader::TextureType::Texture3D: {
+                    std::string x = regs.GetRegisterAsFloat(instr.gpr8);
+                    std::string y = regs.GetRegisterAsFloat(instr.gpr20);
+                    std::string z = regs.GetRegisterAsFloat(instr.gpr20.Value() + 1);
+                    coord = "vec3 coords = vec3(" + x + ", " + y + ", " + z + ");";
+                    break;
+                }
                 case Tegra::Shader::TextureType::TextureCube: {
                     std::string x = regs.GetRegisterAsFloat(instr.gpr8);
                     std::string y = regs.GetRegisterAsFloat(instr.gpr8.Value() + 1);

From 2ae88feea771942afc3ec3422685725e5abd0e78 Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Mon, 20 Aug 2018 21:53:49 -0400
Subject: [PATCH 3/3] shader_bytecode: Replace some UNIMPLEMENTED logs.

---
 src/video_core/engines/shader_bytecode.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 3ba6fe614b..875b90359b 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -477,7 +477,9 @@ union Instruction {
             if (texture_info >= 12 && texture_info <= 13)
                 return TextureType::TextureCube;
 
-            UNIMPLEMENTED();
+            LOG_CRITICAL(HW_GPU, "Unhandled texture_info: {}",
+                         static_cast<u32>(texture_info.Value()));
+            UNREACHABLE();
         }
 
         bool IsArrayTexture() const {
@@ -523,7 +525,9 @@ union Instruction {
                 return TextureType::Texture3D;
             }
 
-            UNIMPLEMENTED();
+            LOG_CRITICAL(HW_GPU, "Unhandled texture_info: {}",
+                         static_cast<u32>(texture_info.Value()));
+            UNREACHABLE();
         }
 
         bool IsArrayTexture() const {