These tests used a mix of GL 1.x and newer functionality. This switches all of them up to require GL 3.0 to avoid annoyance. All hardware that can support texture views is GL 3.0-capable.
Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> --- tests/spec/arb_texture_view/CMakeLists.gles3.txt | 3 + tests/spec/arb_texture_view/common.c | 22 ++-- tests/spec/arb_texture_view/rendering_layers.c | 65 ++++++----- tests/spec/arb_texture_view/rendering_levels.c | 53 +++++++-- tests/spec/arb_texture_view/rendering_target.c | 137 ++++++++++++++--------- 5 files changed, 184 insertions(+), 96 deletions(-) diff --git a/tests/spec/arb_texture_view/CMakeLists.gles3.txt b/tests/spec/arb_texture_view/CMakeLists.gles3.txt index c590925..02ce468 100644 --- a/tests/spec/arb_texture_view/CMakeLists.gles3.txt +++ b/tests/spec/arb_texture_view/CMakeLists.gles3.txt @@ -1,3 +1,6 @@ link_libraries(piglitutil_${piglit_target_api}) piglit_add_executable(arb_texture_view-rendering-formats_gles3 rendering-formats.c) +piglit_add_executable(arb_texture_view-rendering-layers_gles3 rendering_layers.c common.c) +piglit_add_executable(arb_texture_view-rendering-levels_gles3 rendering_levels.c common.c) +piglit_add_executable(arb_texture_view-rendering-target_gles3 rendering_target.c common.c) diff --git a/tests/spec/arb_texture_view/common.c b/tests/spec/arb_texture_view/common.c index dedb411..10d3708 100644 --- a/tests/spec/arb_texture_view/common.c +++ b/tests/spec/arb_texture_view/common.c @@ -104,18 +104,14 @@ update_valid_arrays(GLenum *valid, GLenum *invalid, unsigned int numInvalid, void draw_3d_depth(float x, float y, float w, float h, int depth) { - const GLfloat vertices[12] = {x, y, 0.0, - x+w, y, 0.0, - x+w, y+h, 0.0, - x, y+h, 0.0}; - const GLfloat texcoords[12] = {0.0, 0.0, depth, - 1.0, 0.0, depth, - 1.0, 1.0, depth, - 0.0, 1.0, depth}; + const GLfloat vertices[16] = {x, y, depth, 0.0, + x+w, y, depth, 0.0, + x+w, y+h, depth, 0.0, + x, y+h, depth, 0.0}; + const GLfloat texcoords[8] = {0.0, 0.0, + 1.0, 0.0, + 1.0, 1.0, + 0.0, 1.0}; - glVertexPointer(3, GL_FLOAT, 0, vertices); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glTexCoordPointer(3, GL_FLOAT, 0, texcoords); - glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + piglit_draw_rect_from_arrays(vertices, texcoords, false); } diff --git a/tests/spec/arb_texture_view/rendering_layers.c b/tests/spec/arb_texture_view/rendering_layers.c index a461b08..e122a3a 100644 --- a/tests/spec/arb_texture_view/rendering_layers.c +++ b/tests/spec/arb_texture_view/rendering_layers.c @@ -34,7 +34,8 @@ PIGLIT_GL_TEST_CONFIG_BEGIN - config.supports_gl_compat_version = 20; + config.supports_gl_compat_version = 30; + config.supports_gl_es_version = 31; config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE; @@ -55,7 +56,7 @@ test_render_layers(void) GLint l; GLint numLayers[] = {7, 1, 2, 2}; int expectedLayer; - GLfloat expected[3]; + GLfloat expected[4]; int p; bool pass = true; @@ -105,9 +106,10 @@ test_render_layers(void) expected[0] = Colors[expectedLayer][0] / 255.0; expected[1] = Colors[expectedLayer][1] / 255.0; expected[2] = Colors[expectedLayer][2] / 255.0; + expected[3] = 1.0; - p = piglit_probe_pixel_rgb(piglit_width/2, piglit_height/2, - expected); + p = piglit_probe_pixel_rgba(piglit_width/2, piglit_height/2, + expected); piglit_present_results(); @@ -148,34 +150,47 @@ piglit_display(void) return pass ? PIGLIT_PASS : PIGLIT_FAIL; } +#ifdef PIGLIT_USE_OPENGL +#define GLSL_VERSION "130" +#else +#define GLSL_VERSION "310 es" +#endif + +static const char *vs = + "#version " GLSL_VERSION "\n" + "in vec4 piglit_vertex;\n" + "in vec2 piglit_texcoord;\n" + "out vec3 texcoord;\n" + "void main() { \n" + " gl_Position = vec4(piglit_vertex.xy, 0.0, 1.0);\n" + " texcoord = vec3(piglit_texcoord, piglit_vertex.z);\n" + "}\n"; + +static const char *fs = + "#version " GLSL_VERSION "\n" + "#ifdef GL_ES\n" + "precision highp float;\n" + "precision highp sampler2DArray;\n" + "#endif\n" + "in vec3 texcoord;\n" + "uniform sampler2DArray tex;\n" + "out vec4 color;\n" + "void main() { \n" + " color = vec4(texture(tex, texcoord).xyz, 1.0);\n" + "}\n"; + void piglit_init(int argc, char **argv) { - char *vsCode; - char *fsCode; - +#ifdef PIGLIT_USE_OPENGL piglit_require_extension("GL_ARB_texture_storage"); piglit_require_extension("GL_ARB_texture_view"); piglit_require_extension("GL_EXT_texture_array"); +#else + piglit_require_extension("GL_OES_texture_view"); +#endif - /* setup shaders and program object for 2DArray rendering */ - (void)!asprintf(&vsCode, - "void main()\n" - "{\n" - " gl_Position = gl_Vertex;\n" - " gl_TexCoord[0] = gl_MultiTexCoord0;\n" - "}\n"); - (void)!asprintf(&fsCode, - "#extension GL_EXT_texture_array : enable\n" - "uniform sampler2DArray tex;\n" - "void main()\n" - "{\n" - " vec4 color = texture2DArray(tex, gl_TexCoord[0].xyz);\n" - " gl_FragColor = vec4(color.xyz, 1.0);\n" - "}\n"); - prog2Darray = piglit_build_simple_program(vsCode, fsCode); - free(fsCode); - free(vsCode); + prog2Darray = piglit_build_simple_program(vs, fs); tex_loc_2Darray = glGetUniformLocation(prog2Darray, "tex"); } diff --git a/tests/spec/arb_texture_view/rendering_levels.c b/tests/spec/arb_texture_view/rendering_levels.c index 51f5366..728e89a 100644 --- a/tests/spec/arb_texture_view/rendering_levels.c +++ b/tests/spec/arb_texture_view/rendering_levels.c @@ -34,7 +34,8 @@ PIGLIT_GL_TEST_CONFIG_BEGIN - config.supports_gl_compat_version = 20; + config.supports_gl_compat_version = 30; + config.supports_gl_es_version = 31; config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE; @@ -42,6 +43,36 @@ PIGLIT_GL_TEST_CONFIG_END static const char *TestName = "arb_texture_view-rendering-levels"; +#ifdef PIGLIT_USE_OPENGL +#define GLSL_VERSION "130" +#else +#define GLSL_VERSION "310 es" +#endif + +static const char *vs = + "#version " GLSL_VERSION "\n" + "in vec4 piglit_vertex;\n" + "in vec2 piglit_texcoord;\n" + "out vec2 texcoord;\n" + "void main() { \n" + " gl_Position = piglit_vertex;\n" + " texcoord = piglit_texcoord;\n" + "}\n"; + +static const char *fs = + "#version " GLSL_VERSION "\n" + "#ifdef GL_ES\n" + "precision highp float;\n" + "precision highp sampler2D;\n" + "#endif\n" + "in vec2 texcoord;\n" + "uniform sampler2D tex;\n" + "out vec4 color;\n" + "void main() { \n" + " color = texture(tex, texcoord);\n" + "}\n"; + + /** * Texture views with varying minimum and number of levels, 2D only */ @@ -53,17 +84,14 @@ test_render_levels(void) GLuint numLevels[] = {3,2,2,1}; GLint l; int expectedLevel; - GLfloat expected[3]; + GLfloat expected[4]; int p; bool pass = true; - glUseProgram(0); - glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); glTexStorage2D(GL_TEXTURE_2D, levels, GL_RGBA8, width, height); - glEnable(GL_TEXTURE_2D); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); @@ -92,6 +120,7 @@ test_render_levels(void) glTextureView(new_tex, GL_TEXTURE_2D, tex, GL_RGBA8, l, numLevels[l], 0, 1); glBindTexture(GL_TEXTURE_2D, new_tex); + glActiveTexture(GL_TEXTURE0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, levels-1); glClear(GL_COLOR_BUFFER_BIT); @@ -103,9 +132,10 @@ test_render_levels(void) expected[0] = Colors[expectedLevel][0] / 255.0; expected[1] = Colors[expectedLevel][1] / 255.0; expected[2] = Colors[expectedLevel][2] / 255.0; + expected[3] = 1.0; - p = piglit_probe_pixel_rgb(piglit_width/(2*(l+3)), - piglit_height/(2*(l+3)), expected); + p = piglit_probe_pixel_rgba(piglit_width/(2*(l+3)), + piglit_height/(2*(l+3)), expected); piglit_present_results(); @@ -141,7 +171,6 @@ test_render_levels(void) glDeleteTextures(1, &new_tex); } - glDisable(GL_TEXTURE_2D); glDeleteTextures(1, &tex); return pass; } @@ -168,6 +197,14 @@ piglit_display(void) void piglit_init(int argc, char **argv) { + GLuint prog; +#ifdef PIGLIT_USE_OPENGL piglit_require_extension("GL_ARB_texture_storage"); piglit_require_extension("GL_ARB_texture_view"); +#else + piglit_require_extension("GL_OES_texture_view"); +#endif + + prog = piglit_build_simple_program(vs, fs); + glUseProgram(prog); } diff --git a/tests/spec/arb_texture_view/rendering_target.c b/tests/spec/arb_texture_view/rendering_target.c index 554d1d7..af050b2 100644 --- a/tests/spec/arb_texture_view/rendering_target.c +++ b/tests/spec/arb_texture_view/rendering_target.c @@ -34,15 +34,15 @@ PIGLIT_GL_TEST_CONFIG_BEGIN - config.supports_gl_compat_version = 20; + config.supports_gl_compat_version = 30; + config.supports_gl_es_version = 31; config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE; PIGLIT_GL_TEST_CONFIG_END static const char *TestName = "arb_texture_view-rendering-target"; -static int tex_loc_2Darray, tex_loc_1D; -static int prog2Darray, prog1D; +static int prog3D, prog2Darray, prog2D, prog1D; /** * Simple views of textures; test rendering with various texture view targets @@ -55,7 +55,6 @@ test_render_with_targets(GLenum target) GLint l; bool pass = true; - glUseProgram(0); glGenTextures(1, &tex); glBindTexture(target, tex); @@ -137,7 +136,7 @@ test_render_with_targets(GLenum target) GL_NEAREST_MIPMAP_NEAREST); glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); for (l = 0; l < levels; l++) { - GLfloat expected[3]; + GLfloat expected[4]; int p; glTexParameteri(target, GL_TEXTURE_BASE_LEVEL, l); @@ -148,34 +147,31 @@ test_render_with_targets(GLenum target) switch (target) { case GL_TEXTURE_1D: glUseProgram(prog1D); - glUniform1i(tex_loc_1D, 0); piglit_draw_rect_tex(-1.0, -1.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0); break; case GL_TEXTURE_2D: - glEnable(target); + glUseProgram(prog2D); piglit_draw_rect_tex(-1.0, -1.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0); - glDisable(target); break; case GL_TEXTURE_2D_ARRAY: glUseProgram(prog2Darray); - glUniform1i(tex_loc_2Darray, 0); draw_3d_depth(-1.0, -1.0, 2.0, 2.0, l); break; case GL_TEXTURE_3D: - glEnable(target); + glUseProgram(prog3D); draw_3d_depth(-1.0, -1.0, 2.0, 2.0, l); - glDisable(target); break; } expected[0] = Colors[l][0] / 255.0; expected[1] = Colors[l][1] / 255.0; expected[2] = Colors[l][2] / 255.0; + expected[3] = 1.0; - p = piglit_probe_pixel_rgb(piglit_width/2, piglit_height/2, - expected); + p = piglit_probe_pixel_rgba(piglit_width/2, piglit_height/2, + expected); piglit_present_results(); @@ -210,7 +206,9 @@ enum piglit_result piglit_display(void) { bool pass = true; +#ifdef PIGLIT_USE_OPENGL X(test_render_with_targets(GL_TEXTURE_1D), "1D view rendering"); +#endif X(test_render_with_targets(GL_TEXTURE_2D), "2D view rendering"); X(test_render_with_targets(GL_TEXTURE_3D), "3D view rendering"); X(test_render_with_targets(GL_TEXTURE_2D_ARRAY), @@ -220,49 +218,88 @@ piglit_display(void) return pass ? PIGLIT_PASS : PIGLIT_FAIL; } +#ifdef PIGLIT_USE_OPENGL +#define GLSL_VERSION "130" +#else +#define GLSL_VERSION "310 es" +#endif + +static const char *vs = + "#version " GLSL_VERSION "\n" + "in vec4 piglit_vertex;\n" + "in vec2 piglit_texcoord;\n" + "out vec3 texcoord;\n" + "void main() { \n" + " gl_Position = vec4(piglit_vertex.xy, 0.0, 1.0);\n" + " texcoord = vec3(piglit_texcoord, piglit_vertex.z);\n" + "}\n"; + +static const char *fs_3d = + "#version " GLSL_VERSION "\n" + "#ifdef GL_ES\n" + "precision highp float;\n" + "precision highp sampler3D;\n" + "#endif\n" + "in vec3 texcoord;\n" + "uniform sampler3D tex;\n" + "out vec4 color;\n" + "void main() { \n" + " color = vec4(texture(tex, texcoord).xyz, 1.0);\n" + "}\n"; + +static const char *fs_2darray = + "#version " GLSL_VERSION "\n" + "#ifdef GL_ES\n" + "precision highp float;\n" + "precision highp sampler2DArray;\n" + "#endif\n" + "in vec3 texcoord;\n" + "uniform sampler2DArray tex;\n" + "out vec4 color;\n" + "void main() { \n" + " color = vec4(texture(tex, texcoord).xyz, 1.0);\n" + "}\n"; + +static const char *fs_2d = + "#version " GLSL_VERSION "\n" + "#ifdef GL_ES\n" + "precision highp float;\n" + "precision highp sampler2D;\n" + "#endif\n" + "in vec3 texcoord;\n" + "uniform sampler2D tex;\n" + "out vec4 color;\n" + "void main() { \n" + " color = vec4(texture(tex, texcoord.xy).xyz, 1.0);\n" + "}\n"; + +#ifdef PIGLIT_USE_OPENGL +static const char *fs_1d = + "#version " GLSL_VERSION "\n" + "in vec3 texcoord;\n" + "uniform sampler1D tex;\n" + "out vec4 color;\n" + "void main() { \n" + " color = vec4(texture(tex, texcoord.x).xyz, 1.0);\n" + "}\n"; +#endif void piglit_init(int argc, char **argv) { - char *vsCode; - char *fsCode; - +#ifdef PIGLIT_USE_OPENGL piglit_require_extension("GL_ARB_texture_storage"); piglit_require_extension("GL_ARB_texture_view"); piglit_require_extension("GL_EXT_texture_array"); +#else + piglit_require_extension("GL_OES_texture_view"); +#endif - /* setup shaders and program object for 2DArray rendering */ - (void)!asprintf(&vsCode, - "void main()\n" - "{\n" - " gl_Position = gl_Vertex;\n" - " gl_TexCoord[0] = gl_MultiTexCoord0;\n" - "}\n"); - (void)!asprintf(&fsCode, - "#extension GL_EXT_texture_array : enable\n" - "uniform sampler2DArray tex;\n" - "void main()\n" - "{\n" - " vec4 color = texture2DArray(tex, gl_TexCoord[0].xyz);\n" - " gl_FragColor = vec4(color.xyz, 1.0);\n" - "}\n"); - - prog2Darray = piglit_build_simple_program(vsCode, fsCode); - free(fsCode); - tex_loc_2Darray = glGetUniformLocation(prog2Darray, "tex"); - - /* setup shaders and program object for 1D rendering */ - (void)!asprintf(&fsCode, - "#extension GL_EXT_texture_array : enable\n" - "uniform sampler1D tex;\n" - "void main()\n" - "{\n" - " vec4 color = texture1D(tex, gl_TexCoord[0].x);\n" - " gl_FragColor = vec4(color.xyz, 1.0);\n" - "}\n"); - prog1D = piglit_build_simple_program(vsCode, fsCode); - free(fsCode); - free(vsCode); - - tex_loc_1D = glGetUniformLocation(prog1D, "tex"); + prog3D = piglit_build_simple_program(vs, fs_3d); + prog2Darray = piglit_build_simple_program(vs, fs_2darray); + prog2D = piglit_build_simple_program(vs, fs_2d); + +#ifdef PIGLIT_USE_OPENGL + prog1D = piglit_build_simple_program(vs, fs_1d); +#endif } -- 2.7.3 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit