Because the token "#version 300 es " is necessary with the current 
infrastructure during a GLSL ES30 shader test is added.

This patch is used to make it more automation, and the infrastructure can now 
adding "#version 300 es" itself, when the GLSL ES30 shader do not include the 
token.

Signed-off-by: Wang Shuo <[email protected]>
---
 tests/glslparsertest/glslparsertest.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/tests/glslparsertest/glslparsertest.c 
b/tests/glslparsertest/glslparsertest.c
index b969eff..39704ac 100644
--- a/tests/glslparsertest/glslparsertest.c
+++ b/tests/glslparsertest/glslparsertest.c
@@ -214,13 +214,15 @@ test(void)
 {
        GLint prog;
        GLint ok;
-       GLchar *prog_string;
+       GLchar *prog_string[2];
        FILE *out;
        GLboolean pass;
        GLchar *info;
        GLint size;
        GLenum type;
        char *failing_stage = NULL;
+       GLint ISGLSLES30VersionContained = 0;
+       char *glslES30Version = "#version 300 es\n";
 
        if (strcmp(filename + strlen(filename) - 4, "frag") == 0)
                type = GL_FRAGMENT_SHADER;
@@ -264,15 +266,25 @@ test(void)
                }
        }
 
-       prog_string = piglit_load_text_file(filename, NULL);
-       if (prog_string == NULL) {
+       prog_string[1] = piglit_load_text_file(filename, NULL);
+       if (prog_string[1] == NULL) {
                fprintf(stderr, "Couldn't open program %s: %s\n",
                        filename, strerror(errno));
                exit(1);
        }
 
+       if (strstr(filename, "glsl-es-3.00") != NULL){
+               if (strstr(prog_string[1], "#version 300 es") == NULL){
+                       ISGLSLES30VersionContained = 1;
+               }
+       }
+
+       prog_string[0] = glslES30Version;
        prog = glCreateShader(type);
-       glShaderSource(prog, 1, (const GLchar **)&prog_string, NULL);
+       if(ISGLSLES30VersionContained == 0)
+               glShaderSource(prog, 1, (const GLchar **)&(prog_string[1]), 
NULL);
+       else
+               glShaderSource(prog, 2, (const GLchar **)prog_string, NULL);
        glCompileShader(prog);
        ok = get_shader_compile_status(prog);
 
@@ -336,7 +348,7 @@ test(void)
                        filename, info);
                if (expected_pass) {
                        printf("Shader source:\n");
-                       printf("%s\n", prog_string);
+                       printf("%s\n", prog_string[1]);
                }
        } else {
                fprintf(out, "Successfully %s %s shader %s: %s\n", @@ -345,13 
+357,13 @@ test(void)
                        filename, info);
                if (!expected_pass) {
                        printf("Shader source:\n");
-                       printf("%s\n", prog_string);
+                       printf("%s\n", prog_string[1]);
                }
        }
 
        if (size != 0)
                free(info);
-       free(prog_string);
+       free(prog_string[1]);
        glDeleteShader(prog);
        piglit_report_result (pass ? PIGLIT_PASS : PIGLIT_FAIL);  }
--
1.8.3.2

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to