[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