diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 15 |
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 += ", "; |