Fix shader_test.py so it uses shader_runner_gles2 when running a shader test with GL 2.00 es in the [required] section.
In shader_runner.c set config.supports_gl_es_version = 20 when PIGLIT_USE_OPENGL_ES2 is defined. Add a number of GLES2 specific workarounds to shader_runner_gles_workarounds.h. Add tests/spec/glsl-es-1.00 directory and new execution/sanity.shader_test in that directory. Signed-off-by: Tom Gall <[email protected]> --- framework/shader_test.py | 4 +- tests/shaders/shader_runner.c | 3 ++ tests/shaders/shader_runner_gles_workarounds.h | 52 ++++++++++++++++++-- .../spec/glsl-es-1.00/execution/sanity.shader_test | 44 +++++++++++++++++ 4 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 tests/spec/glsl-es-1.00/execution/sanity.shader_test diff --git a/framework/shader_test.py b/framework/shader_test.py index ea637cf..335a6c1 100755 --- a/framework/shader_test.py +++ b/framework/shader_test.py @@ -224,9 +224,7 @@ class ShaderTest(PlainExecTest): if self.__gl_api == ShaderTest.API_GL: runner = "shader_runner" elif self.__gl_api == ShaderTest.API_GLES2: - # Tentatively, let's use the gles3 shader runner to run gles2 - # tests. - runner = "shader_runner_gles3" + runner = "shader_runner_gles2" elif self.__gl_api == ShaderTest.API_GLES3: runner = "shader_runner_gles3" else: diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c index db92b8f..db0362c 100644 --- a/tests/shaders/shader_runner.c +++ b/tests/shaders/shader_runner.c @@ -48,6 +48,9 @@ PIGLIT_GL_TEST_CONFIG_BEGIN get_required_versions(argv[1], &config); else config.supports_gl_compat_version = 10; +#if defined(PIGLIT_USE_OPENGL_ES2) + config.supports_gl_es_version = 20; +#endif config.window_width = 250; config.window_height = 250; diff --git a/tests/shaders/shader_runner_gles_workarounds.h b/tests/shaders/shader_runner_gles_workarounds.h index 5afd540..161f985 100644 --- a/tests/shaders/shader_runner_gles_workarounds.h +++ b/tests/shaders/shader_runner_gles_workarounds.h @@ -23,9 +23,9 @@ /** * \file - * \brief Workarounds for building with GLES. + * \brief Workarounds for building with GLES2 and GLES3. * - * When building shader_runner against GLES3 and libpiglitutil_gles3, there + * When building shader_runner against GLESX and libpiglitutil_glesX, there * are many macros and symbols that are not defined. This header defines such * macros to have the same value found in <GL/gl*.h>, and defines such * functions to print an error message and then report PIGLIT_SKIP, just as @@ -64,6 +64,26 @@ #define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 #define GL_WRITE_ONLY 0x88B9 +#if defined(PIGLIT_USE_OPENGL_ES2) +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_RED 0x1903 +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_INVALID_INDEX 0xFFFFFFFFu +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS GL_MAX_FRAGMENT_UNIFORM_VECTORS +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS GL_MAX_VERTEX_UNIFORM_VECTORS +#endif /*PIGLIT_USE_OPENGL_ES2 */ + static void #if defined(__GNUC__) __attribute__((unused)) @@ -88,7 +108,7 @@ unsupported_function(const char *name) return_value; \ }) -#if defined(PIGLIT_USE_OPENGL_ES3) +#if defined(PIGLIT_USE_OPENGL_ES3) || defined(PIGLIT_USE_OPENGL_ES2) #define piglit_frustum_projection(...) UNSUPPORTED_FUNCTION(piglit_frustum_projection, 0) #define piglit_gen_ortho_projection(...) UNSUPPORTED_FUNCTION(piglit_gen_ortho_projection, 0) @@ -104,6 +124,28 @@ unsupported_function(const char *name) #define glProgramLocalParameter4fvARB(...) UNSUPPORTED_FUNCTION(glProgramLocalParameter4fvARB, 0) #define glShadeModel(...) UNSUPPORTED_FUNCTION(glShadeModel, 0) +#if defined(PIGLIT_USE_OPENGL_ES2) +#define glMapBuffer(...) UNSUPPORTED_FUNCTION(glMapBuffer, 0) +#define glUnmapBuffer(...) UNSUPPORTED_FUNCTION(glUnmapBuffer, 0) +#define glUniform1ui(...) UNSUPPORTED_FUNCTION(glUniform1ui, 0) +#define glUniform2uiv(...) UNSUPPORTED_FUNCTION(glUniform2uiv, 0) +#define glUniform3uiv(...) UNSUPPORTED_FUNCTION(glUniform3uiv, 0) +#define glUniform4uiv(...) UNSUPPORTED_FUNCTION(glUniform4uiv, 0) +#define glUniformMatrix2x3fv(...) UNSUPPORTED_FUNCTION(glUniformMatrix2x3fv, 0) +#define glUniformMatrix2x4fv(...) UNSUPPORTED_FUNCTION(glUniformMatrix2x4fv, 0) +#define glUniformMatrix3x2fv(...) UNSUPPORTED_FUNCTION(glUniformMatrix3x2fv, 0) +#define glUniformMatrix3x4fv(...) UNSUPPORTED_FUNCTION(glUniformMatrix3x4fv, 0) +#define glUniformMatrix4x2fv(...) UNSUPPORTED_FUNCTION(glUniformMatrix4x2fv, 0) +#define glUniformMatrix4x3fv(...) UNSUPPORTED_FUNCTION(glUniformMatrix4x3fv, 0) +#define glDrawArraysInstanced(...) UNSUPPORTED_FUNCTION(glDrawArrayInstanced, 0) +#define glGetActiveUniformBlockiv(...) UNSUPPORTED_FUNCTION(glGetActiveUniformBlockiv, 0) +#define glBindBufferBase(...) UNSUPPORTED_FUNCTION(glBindBufferiBase, 0) +#define glGetUniformIndices(...) UNSUPPORTED_FUNCTION(glGetUniformIndices, 0) +#define glGetActiveUniformsiv(...) UNSUPPORTED_FUNCTION(glGetActiveUniformsiv, 0) +#define glGenVertexArrays(...) UNSUPPORTED_FUNCTION(glGenVertexArrays, 0) +#define glBindVertexArray(...) UNSUPPORTED_FUNCTION(glBindVertexArray, 0) +#endif /* PIGLIT_USE_OPENGL_ES2 */ + #define glBindProgramARB(a, b) \ /* Custom definition to suppress unused-variable warnings. */ \ ({ \ @@ -122,6 +164,7 @@ unsupported_function(const char *name) unsupported_function("glVertexPointer"); \ }) +#if defined(PIGLIT_USE_OPENGL_ES3) static GLvoid* glMapBuffer(GLenum target, GLbitfield access) { @@ -135,5 +178,6 @@ glMapBuffer(GLenum target, GLbitfield access) return glMapBufferRange(target, 0, length, access); } +#endif /* PIGLIT_USE_OPENGL_ES3 */ -#endif /*PIGLIT_USE_OPENGL*/ +#endif /* PIGLIT_USE_OPENGL_ES3 || PIGLIT_USE_OPENGL_ES2 */ diff --git a/tests/spec/glsl-es-1.00/execution/sanity.shader_test b/tests/spec/glsl-es-1.00/execution/sanity.shader_test new file mode 100644 index 0000000..631757a --- /dev/null +++ b/tests/spec/glsl-es-1.00/execution/sanity.shader_test @@ -0,0 +1,44 @@ +# Fill the window with red, then green, then blue. + +[require] +GL >= 2.0 es +GLSL >= 1.00 es + +[vertex shader] +#version 100 + +attribute vec4 vertex; + +void main() { + gl_Position = vertex; +} + +[fragment shader] +#version 100 + +uniform vec4 u_color; +vec4 color; + +void main() { + gl_FragColor = u_color; +} + +[vertex data] +vertex/float/2 +-1.0 -1.0 + 1.0 -1.0 + 1.0 1.0 +-1.0 1.0 + +[test] +uniform vec4 u_color 1.0 0.0 0.0 1.0 +draw arrays GL_TRIANGLE_FAN 0 4 +probe all rgba 1.0 0.0 0.0 1.0 + +uniform vec4 u_color 0.0 1.0 0.0 1.0 +draw arrays GL_TRIANGLE_FAN 0 4 +probe all rgba 0.0 1.0 0.0 1.0 + +uniform vec4 u_color 0.0 0.0 1.0 1.0 +draw arrays GL_TRIANGLE_FAN 0 4 +probe all rgba 0.0 0.0 1.0 1.0 -- 1.7.10.4 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
