diff options
author | bunnei <bunneidev@gmail.com> | 2018-10-01 03:53:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-01 03:53:38 +0200 |
commit | bc679c9b8c05d3db46da8cef77e729b31c6dbff5 (patch) | |
tree | a96752a0ddefec9a857fa3423fd91b88ef19967d /src/video_core/renderer_opengl | |
parent | Merge pull request #1420 from MerryMage/dynarmic (diff) | |
parent | Fix trailing whitespace (diff) | |
download | yuzu-bc679c9b8c05d3db46da8cef77e729b31c6dbff5.tar yuzu-bc679c9b8c05d3db46da8cef77e729b31c6dbff5.tar.gz yuzu-bc679c9b8c05d3db46da8cef77e729b31c6dbff5.tar.bz2 yuzu-bc679c9b8c05d3db46da8cef77e729b31c6dbff5.tar.lz yuzu-bc679c9b8c05d3db46da8cef77e729b31c6dbff5.tar.xz yuzu-bc679c9b8c05d3db46da8cef77e729b31c6dbff5.tar.zst yuzu-bc679c9b8c05d3db46da8cef77e729b31c6dbff5.zip |
Diffstat (limited to 'src/video_core/renderer_opengl')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 320babdb1..579a78702 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -2026,9 +2026,12 @@ private: break; } case OpCode::Id::TLDS: { - ASSERT(instr.tlds.GetTextureType() == Tegra::Shader::TextureType::Texture2D); - ASSERT(instr.tlds.IsArrayTexture() == false); std::string coord; + const Tegra::Shader::TextureType texture_type{instr.tlds.GetTextureType()}; + const bool is_array{instr.tlds.IsArrayTexture()}; + + ASSERT(texture_type == Tegra::Shader::TextureType::Texture2D); + ASSERT(is_array == false); ASSERT_MSG(!instr.tlds.UsesMiscMode(Tegra::Shader::TextureMiscMode::NODEP), "NODEP is not implemented"); @@ -2037,9 +2040,14 @@ private: ASSERT_MSG(!instr.tlds.UsesMiscMode(Tegra::Shader::TextureMiscMode::MZ), "MZ is not implemented"); - switch (instr.tlds.GetTextureType()) { + switch (texture_type) { + case Tegra::Shader::TextureType::Texture1D: { + const std::string x = regs.GetRegisterAsInteger(instr.gpr8); + coord = "int coords = " + x + ';'; + break; + } case Tegra::Shader::TextureType::Texture2D: { - if (instr.tlds.IsArrayTexture()) { + if (is_array) { LOG_CRITICAL(HW_GPU, "Unhandled 2d array texture"); UNREACHABLE(); } else { @@ -2051,11 +2059,11 @@ private: } default: LOG_CRITICAL(HW_GPU, "Unhandled texture type {}", - static_cast<u32>(instr.tlds.GetTextureType())); + static_cast<u32>(texture_type)); UNREACHABLE(); } - const std::string sampler = GetSampler(instr.sampler, instr.tlds.GetTextureType(), - instr.tlds.IsArrayTexture()); + + const std::string sampler = GetSampler(instr.sampler, texture_type, is_array); const std::string texture = "texelFetch(" + sampler + ", coords, 0)"; WriteTexsInstruction(instr, coord, texture); break; |