summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 3a41ed30c..b148aa057 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -1822,16 +1822,19 @@ private:
1822 expr += GetSampler(meta->sampler); 1822 expr += GetSampler(meta->sampler);
1823 expr += ", "; 1823 expr += ", ";
1824 1824
1825 expr += constructors.at(operation.GetOperandsCount() - 1); 1825 expr += constructors.at(operation.GetOperandsCount() + (meta->array ? 1 : 0) - 1);
1826 expr += '('; 1826 expr += '(';
1827 for (std::size_t i = 0; i < count; ++i) { 1827 for (std::size_t i = 0; i < count; ++i) {
1828 expr += VisitOperand(operation, i).AsInt(); 1828 if (i > 0) {
1829 const std::size_t next = i + 1;
1830 if (next == count)
1831 expr += ')';
1832 else if (next < count)
1833 expr += ", "; 1829 expr += ", ";
1830 }
1831 expr += VisitOperand(operation, i).AsInt();
1834 } 1832 }
1833 if (meta->array) {
1834 expr += ", ";
1835 expr += Visit(meta->array).AsInt();
1836 }
1837 expr += ')';
1835 1838
1836 if (meta->lod && !meta->sampler.IsBuffer()) { 1839 if (meta->lod && !meta->sampler.IsBuffer()) {
1837 expr += ", "; 1840 expr += ", ";