[Piglit] [PATCH] glslparsertest: Update for gles3.1 and gles3.2

Ilia Mirkin imirkin at alum.mit.edu
Thu Nov 5 15:31:37 PST 2015


On Wed, Nov 4, 2015 at 4:35 PM,  <baker.dylan.c at gmail.com> wrote:
> From: Dylan Baker <baker.dylan.c at gmail.com>
>
> I noticed during my fast-skip work that one test[1] changed status (from
> fail -> skip), what I realized is that glslparsertest doesn't know how
> to handle gles3.1 or gles3.2.
>
> This patch adds support for checking 3.1 and 3.2 glsl versions, both in
> setting the config information, and in checking for
> ARB_ES3_x_compatibility extensions when running on a non-GLES or mixed
> piglit build.
>
> [1] spec at glsl-es-3.10@compiler at helper-invocation.frag
>
> This fixes [1] on the i965 driver (fail -> skip), since it now requests
> ARB_ES3_1_compatibility
>
> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> ---
>
> This was tested with i965 on HSW, and only the mentioned test changes.
>
>  tests/glslparsertest/glslparsertest.c | 37 +++++++++++++++++++++++++++++++++--
>  1 file changed, 35 insertions(+), 2 deletions(-)
>
> diff --git a/tests/glslparsertest/glslparsertest.c b/tests/glslparsertest/glslparsertest.c
> index e9a2cb3..ca66b4b 100644
> --- a/tests/glslparsertest/glslparsertest.c
> +++ b/tests/glslparsertest/glslparsertest.c
> @@ -45,6 +45,12 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
>                 const unsigned int int_version
>                         = parse_glsl_version_number(argv[3]);
>                 switch (int_version) {
> +               /* This is a hack to support es
> +                *
> +                * This works because version 1.00, 3.00, 3.10, 3.20 (even
> +                * though 3.x should include "es") are unique to GLES, there is
> +                * no desktop OpenGL shader language 1.00, 3.00, 3.10, or 3.20
> +                */
>                 case 100:
>                         config.supports_gl_compat_version = 10;
>                         config.supports_gl_es_version = 20;
> @@ -53,6 +59,14 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
>                         config.supports_gl_compat_version = 10;
>                         config.supports_gl_es_version = 30;
>                         break;
> +               case 310:
> +                       config.supports_gl_compat_version = 10;
> +                       config.supports_gl_es_version = 31;
> +                       break;
> +               case 320:
> +                       config.supports_gl_compat_version = 10;
> +                       config.supports_gl_es_version = 32;
> +                       break;
>                 default: {
>                         const unsigned int gl_version
>                                 = required_gl_version_from_glsl_version(int_version);
> @@ -145,6 +159,15 @@ get_shader_name(GLenum type)
>         return NULL;
>  }
>
> +static bool
> +glsl_is_es(int version)
> +{
> +       if (version == 100 || version == 300 || version == 310 || version == 320) {
> +               return true;
> +       }
> +       return false;
> +}
> +
>  /**
>   * Attach a dumy shader of the given type.
>   */
> @@ -154,6 +177,8 @@ attach_dummy_shader(GLuint shader_prog, GLenum type)
>         const char *shader_template;
>         char shader_text[4096];
>         GLint shader;
> +       /* this sets the 'es' string at the end of the version, 1.00 doesn't have that */
> +       bool es_flag = (glsl_is_es(requested_version) && requested_version != 100);
>
>         switch (type) {
>         case GL_VERTEX_SHADER:
> @@ -183,7 +208,7 @@ attach_dummy_shader(GLuint shader_prog, GLenum type)
>         snprintf(shader_text, sizeof(shader_text),
>                  shader_template,
>                  requested_version,
> -                (requested_version == 300) ? "es" : "");
> +                es_flag ? "es" : "");
>         shader = piglit_compile_shader_text(type, shader_text);
>         glAttachShader(shader_prog, shader);
>  }
> @@ -228,6 +253,7 @@ test(void)
>         GLint size;
>         GLenum type;
>         char *failing_stage = NULL;
> +       bool is_es = glsl_is_es(requested_version);
>
>         if (strcmp(filename + strlen(filename) - 4, "frag") == 0)
>                 type = GL_FRAGMENT_SHADER;
> @@ -302,8 +328,9 @@ test(void)
>
>                 shader_prog = glCreateProgram();
>                 glAttachShader(shader_prog, prog);
> -               if (requested_version == 100 || requested_version == 300)
> +               if (is_es) {

why create the separate variable? also i'm a bit conflicted on what
attach_complementary_shader is doing. among other things, it will fail
for non-frag/vertex shaders (and compute is "core" in 3.1 now, along
with optional geom/tess stages with exts).

otoh, probably not a problem for you to fix.

With the above done as

if (glsl_is_es(requested_version)) {

and the var dropped, this is Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

>                         attach_complementary_shader(shader_prog, type);
> +               }
>  #if PIGLIT_USE_OPENGL
>                 if (type == GL_GEOMETRY_SHADER ||
>                     type == GL_TESS_CONTROL_SHADER ||
> @@ -450,6 +477,12 @@ check_version(unsigned glsl_version)
>                 } else if (requested_version == 300) {
>                         piglit_require_extension("GL_ARB_ES3_compatibility");
>                         return;
> +               } else if (requested_version == 310) {
> +                       piglit_require_extension("GL_ARB_ES3_1_compatibility");
> +                       return;
> +               } else if (requested_version == 320) {
> +                       piglit_require_extension("GL_ARB_ES3_2_compatibility");
> +                       return;
>                 }
>         }
>
> --
> 2.6.2
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list