diff options
author | bunnei <bunneidev@gmail.com> | 2018-08-21 04:15:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-21 04:15:18 +0200 |
commit | e33452f7e8c80c8eb6e4704af6b53f7fb7aa596d (patch) | |
tree | d679cafd3f06525d2f0995d8fb8dedcd0d0234c1 | |
parent | Merge pull request #1106 from Subv/multiple_rendertargets (diff) | |
parent | shader_bytecode: Replace some UNIMPLEMENTED logs. (diff) | |
download | yuzu-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.h | 8 | ||||
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 15 |
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); |