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

Dylan Baker baker.dylan.c at gmail.com
Thu Nov 5 17:00:05 PST 2015


On Thu, Nov 05, 2015 at 06:31:37PM -0500, Ilia Mirkin wrote:
> 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>

Thanks Ilia, I've made the changes locally, I'll hold off pushing this
till tomorrowish in case anyone else has input.

> 
> >                         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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20151105/42e928aa/attachment-0001.sig>


More information about the Piglit mailing list