<p dir="ltr"><br>
On May 13, 2016 4:41 AM, "Kenneth Graunke" <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>> wrote:<br>
><br>
> We apparently have some generated parser tests for ES 3.x extensions<br>
> that use compute shaders.  These didn't work because glslparsertest<br>
> didn't actually support these features.<br>
><br>
> For example, spec/oes_sample_variables/preprocessor/enabled-es.comp<br>
> failed as soon as I enabled the OES_sample_variables extension.<br>
> ---<br>
>  tests/glslparsertest/glslparsertest.c | 41 +++++++++++++++--------------------<br>
>  1 file changed, 18 insertions(+), 23 deletions(-)<br>
><br>
> diff --git a/tests/glslparsertest/glslparsertest.c b/tests/glslparsertest/glslparsertest.c<br>
> index d70f508..b0b73d7 100644<br>
> --- a/tests/glslparsertest/glslparsertest.c<br>
> +++ b/tests/glslparsertest/glslparsertest.c<br>
> @@ -227,17 +227,23 @@ attach_dummy_shader(GLuint shader_prog, GLenum type)<br>
>  static void<br>
>  attach_complementary_shader(GLuint shader_prog, GLenum type)<br>
>  {<br>
> -       switch (type) {<br>
> -       case GL_FRAGMENT_SHADER:<br>
> +       if (type == GL_FRAGMENT_SHADER)<br>
>                 attach_dummy_shader(shader_prog, GL_VERTEX_SHADER);<br>
> -               break;<br>
> -       case GL_VERTEX_SHADER:<br>
> +       else if (type == GL_VERTEX_SHADER)<br>
>                 attach_dummy_shader(shader_prog, GL_FRAGMENT_SHADER);<br>
> -               break;<br>
> -       default:<br>
> -               fprintf(stderr,<br>
> -                       "Unexpected type in attach_complementary_shader()");<br>
> -               piglit_report_result(PIGLIT_FAIL);<br>
> +}<br>
> +<br>
> +static void<br>
> +require_feature(int gl_ver, const char *gl_ext, int es_ver, const char *es_ext)<br>
> +{<br>
> +       const int required_ver = piglit_is_gles() ? es_ver : gl_ver;<br>
> +       const char *required_ext = piglit_is_gles() ? es_ext : gl_ext;<br>
> +<br>
> +       if (piglit_get_gl_version() < required_ver &&<br>
> +           !piglit_is_extension_supported(required_ext)) {<br>
> +               printf("Test requires version %g or %s\n",<br>
> +                      required_ver / 10.0, required_ext);<br>
> +               piglit_report_result(PIGLIT_SKIP);<br>
>         }<br>
>  }<br>
><br>
> @@ -258,7 +264,6 @@ test(void)<br>
>                 type = GL_FRAGMENT_SHADER;<br>
>         else if (strcmp(filename + strlen(filename) - 4, "vert") == 0)<br>
>                 type = GL_VERTEX_SHADER;<br>
> -#ifdef PIGLIT_USE_OPENGL<br>
>         else if (strcmp(filename + strlen(filename) - 4, "tesc") == 0)<br>
>                 type = GL_TESS_CONTROL_SHADER;<br>
>         else if (strcmp(filename + strlen(filename) - 4, "tese") == 0)<br>
> @@ -267,7 +272,6 @@ test(void)<br>
>                 type = GL_GEOMETRY_SHADER;<br>
>         else if (strcmp(filename + strlen(filename) - 4, "comp") == 0)<br>
>                 type = GL_COMPUTE_SHADER;<br>
> -#endif<br>
>         else {<br>
>                 type = GL_NONE;<br>
>                 fprintf(stderr, "Couldn't determine type of program %s\n",<br>
> @@ -279,21 +283,12 @@ test(void)<br>
>         piglit_require_fragment_shader();<br>
><br>
>         if (type == GL_TESS_CONTROL_SHADER || type == GL_TESS_EVALUATION_SHADER) {<br>
> -               if (!piglit_is_extension_supported("GL_ARB_tessellation_shader") &&<br>
> -                   (piglit_is_gles() || piglit_get_gl_version() < 40)) {<br>
> -                       printf("Test requires GL version 4.0 or "<br>
> -                              "GL_ARB_tessellation_shader\n");<br>
> -                       piglit_report_result(PIGLIT_SKIP);<br>
> -               }<br>
> +               require_feature(43, "GL_ARB_tessellation_shader",</p>
<p dir="ltr">I guess you meant 40 here?</p>
<p dir="ltr">> +                               32, "GL_OES_tessellation_shader");<br>
>         }<br>
><br>
>         if (type == GL_COMPUTE_SHADER) {<br>
> -               if (!piglit_is_extension_supported("GL_ARB_compute_shader") &&<br>
> -                   (piglit_is_gles() || piglit_get_gl_version() < 43)) {<br>
> -                       printf("Test requires GL version 4.3 or "<br>
> -                              "GL_ARB_compute_shader\n");<br>
> -                       piglit_report_result(PIGLIT_SKIP);<br>
> -               }<br>
> +               require_feature(43, "GL_ARB_compute_shader", 31, NULL);<br>
>         }<br>
><br>
>         prog_string = piglit_load_text_file(filename, NULL);<br>
> --<br>
> 2.8.2<br>
><br>
> _______________________________________________<br>
> Piglit mailing list<br>
> <a href="mailto:Piglit@lists.freedesktop.org">Piglit@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/piglit">https://lists.freedesktop.org/mailman/listinfo/piglit</a><br>
</p>