From: Dylan Baker <[email protected]> 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] [email protected]@[email protected] This fixes [1] on the i965 driver (fail -> skip), since it now requests ARB_ES3_1_compatibility Signed-off-by: Dylan Baker <[email protected]> --- 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) { 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 [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
