summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-08-21 04:15:18 +0200
committerGitHub <noreply@github.com>2018-08-21 04:15:18 +0200
commite33452f7e8c80c8eb6e4704af6b53f7fb7aa596d (patch)
treed679cafd3f06525d2f0995d8fb8dedcd0d0234c1
parentMerge pull request #1106 from Subv/multiple_rendertargets (diff)
parentshader_bytecode: Replace some UNIMPLEMENTED logs. (diff)
downloadyuzu-e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d.tar
yuzu-e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d.tar.gz
yuzu-e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d.tar.bz2
yuzu-e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d.tar.lz
yuzu-e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d.tar.xz
yuzu-e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d.tar.zst
yuzu-e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d.zip
-rw-r--r--src/video_core/engines/shader_bytecode.h8
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp15
2 files changed, 21 insertions, 2 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 3ba6fe614..875b90359 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 {
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 214a5fa9a..6fb663bbc 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -1568,6 +1568,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()));
@@ -1613,6 +1621,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);