From 673aab52829fb2dbc792c3628a223bdcf8bfcc4b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 29 Jan 2016 02:07:37 +0100 Subject: [PATCH] (PATCH) Strip lines with #pragma parameter. It's not valid GLSL to have quotes in them, and it's meaningless to pass in the #pragmas to the driver. --- gfx/drivers_shader/shader_glsl.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index fcc569b38c..51ffcfe703 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -443,6 +443,22 @@ static GLuint gl_glsl_compile_program(glsl_shader_data_t *glsl, return prog; } +static void gl_glsl_strip_parameter_pragmas(char *source) +{ + /* #pragma parameter lines tend to have " characters in them, + * which is not legal GLSL. */ + char *s = strstr(source, "#pragma parameter"); + + while (s) + { + /* #pragmas have to be on a single line, + * so we can just replace the entire line with spaces. */ + while (*s != '\0' && *s != '\n') + *s++ = ' '; + s = strstr(s, "#pragma parameter"); + } +} + static bool gl_glsl_load_source_path(struct video_shader_pass *pass, const char *path) { @@ -451,6 +467,7 @@ static bool gl_glsl_load_source_path(struct video_shader_pass *pass, if (!ret || len <= 0) return false; + gl_glsl_strip_parameter_pragmas(pass->source.string.vertex); pass->source.string.fragment = strdup(pass->source.string.vertex); return pass->source.string.fragment && pass->source.string.vertex; }