From 8a68c58070e49cd2f975f339eddc4c3c7a5ba4ea Mon Sep 17 00:00:00 2001 From: xperia64 Date: Fri, 29 May 2020 13:32:13 -0400 Subject: [PATCH] Shield TV driver bug workaround shield tv --- src/video_core/renderer_opengl/gl_shader_gen.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index f73e6be4f..aa2ff0074 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -618,13 +618,15 @@ static void WriteTevStage(std::string& out, const PicaFSConfig& config, unsigned if (!IsPassThroughTevStage(stage)) { const std::string index_name = std::to_string(index); - out += fmt::format("vec3 color_results_{}[3] = vec3[3](", index_name); + out += fmt::format("vec3 color_results_{}_1 = ", index_name); AppendColorModifier(out, config, stage.color_modifier1, stage.color_source1, index_name); - out += ", "; + out += fmt::format(";\nvec3 color_results_{}_2 = ", index_name); AppendColorModifier(out, config, stage.color_modifier2, stage.color_source2, index_name); - out += ", "; + out += fmt::format(";\nvec3 color_results_{}_3 = ", index_name); AppendColorModifier(out, config, stage.color_modifier3, stage.color_source3, index_name); - out += ");\n"; + out += fmt::format(";\nvec3 color_results_{}[3] = vec3[3](color_results_{}_1, " + "color_results_{}_2, color_results_{}_3);\n", + index_name, index_name, index_name, index_name); // Round the output of each TEV stage to maintain the PICA's 8 bits of precision out += fmt::format("vec3 color_output_{} = byteround(", index_name);