diff options
author | Tom Gall <tom.gall@linaro.org> | 2013-01-02 15:45:48 -0600 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2013-01-09 11:57:31 -0800 |
commit | c4c03026c3e833de72fa71c845bd9a2c8ca0a28e (patch) | |
tree | d20a9ecc32db9253a2d693158b5db3ebd5d64ac7 | |
parent | 0d125fa275522e602a538caae3b86681aab2b8a6 (diff) |
gles2: add minmax testcase
Add minmax test based on values that can be queried as specified
in chapter 6.2 of the OpenGL ES 2.0.25 spec.
Small modification to tests/util/minmax-test.* so that functions
which use GLint64 and GLuint64 types aren't compiled when
building for OpenGL ES 2.
Signed-off-by: Tom Gall <tom.gall@linaro.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
-rw-r--r-- | tests/all.tests | 1 | ||||
-rw-r--r-- | tests/spec/gles-2.0/CMakeLists.gles2.txt | 1 | ||||
-rw-r--r-- | tests/spec/gles-2.0/minmax.c | 78 | ||||
-rw-r--r-- | tests/util/CMakeLists.gles2.txt | 1 | ||||
-rw-r--r-- | tests/util/minmax-test.c | 6 | ||||
-rw-r--r-- | tests/util/minmax-test.h | 11 |
6 files changed, 94 insertions, 4 deletions
diff --git a/tests/all.tests b/tests/all.tests index 08b79177f..145312c8a 100644 --- a/tests/all.tests +++ b/tests/all.tests @@ -2704,6 +2704,7 @@ egl_khr_create_context['verify GL flavor'] = plain_test('egl-create-context-veri gles20 = Group() spec['!OpenGL ES 2.0'] = gles20 add_concurrent_test(gles20, 'invalid-es3-queries_gles2') +add_concurrent_test(gles20, 'minmax_gles2') gles30 = Group() spec['!OpenGL ES 3.0'] = gles30 diff --git a/tests/spec/gles-2.0/CMakeLists.gles2.txt b/tests/spec/gles-2.0/CMakeLists.gles2.txt index ab78280cf..cf91a71b4 100644 --- a/tests/spec/gles-2.0/CMakeLists.gles2.txt +++ b/tests/spec/gles-2.0/CMakeLists.gles2.txt @@ -3,5 +3,6 @@ link_libraries( ) piglit_add_executable(invalid-es3-queries_gles2 invalid-es3-queries.c) +piglit_add_executable(minmax_gles2 minmax.c) # vim: ft=cmake: diff --git a/tests/spec/gles-2.0/minmax.c b/tests/spec/gles-2.0/minmax.c new file mode 100644 index 000000000..72b8bf254 --- /dev/null +++ b/tests/spec/gles-2.0/minmax.c @@ -0,0 +1,78 @@ +/* Copyright © 2013 Linaro + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "piglit-util-gl-common.h" +#include "minmax-test.h" + +PIGLIT_GL_TEST_CONFIG_BEGIN + + config.supports_gl_es_version = 20; + +PIGLIT_GL_TEST_CONFIG_END + +enum piglit_result +piglit_display(void) +{ + return PIGLIT_FAIL; +} + +void +piglit_init(int argc, char **argv) +{ + /* Taken from es_full_spec_2.0.25, Chapture 6.2 + * If the value's type is listed as Z in a spec table, then consider + * its type to be a signed int (that is, GLint). If the + * value's type is listed as Z^+, then consider its type to be + * unsigned (that is, GLuint). + */ + + piglit_print_minmax_header(); + + /* Table 6.18 */ + piglit_test_min_uint(GL_SUBPIXEL_BITS, 4); + piglit_test_min_uint(GL_MAX_TEXTURE_SIZE, 64); + piglit_test_min_uint(GL_MAX_CUBE_MAP_TEXTURE_SIZE, 16); + piglit_test_min_viewport_dimensions(); + piglit_test_range_float(GL_ALIASED_POINT_SIZE_RANGE, 1, 1); + piglit_test_range_float(GL_ALIASED_LINE_WIDTH_RANGE, 1, 1); + piglit_test_min_uint(GL_SAMPLE_BUFFERS, 0); + piglit_test_min_uint(GL_SAMPLES, 0); + piglit_test_min_int(GL_NUM_COMPRESSED_TEXTURE_FORMATS, 0); + + /* Table 6.19 */ + piglit_test_min_int(GL_NUM_SHADER_BINARY_FORMATS, 0); + + /* Table 6.20 */ + piglit_test_min_uint(GL_MAX_VERTEX_ATTRIBS, 8); + piglit_test_min_uint(GL_MAX_VERTEX_UNIFORM_VECTORS, 128); + piglit_test_min_uint(GL_MAX_VARYING_VECTORS, 8); + piglit_test_min_uint(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, 8); + piglit_test_min_uint(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, 0); + piglit_test_min_uint(GL_MAX_TEXTURE_IMAGE_UNITS, 8); + piglit_test_min_uint(GL_MAX_FRAGMENT_UNIFORM_VECTORS, 16); + piglit_test_min_uint(GL_MAX_RENDERBUFFER_SIZE, 1); + + if (!piglit_check_gl_error(GL_NO_ERROR)) + piglit_report_result(PIGLIT_FAIL); + + piglit_report_result(piglit_minmax_pass ? PIGLIT_PASS : PIGLIT_FAIL); +} diff --git a/tests/util/CMakeLists.gles2.txt b/tests/util/CMakeLists.gles2.txt index 3df0f6bf4..b0d5924a7 100644 --- a/tests/util/CMakeLists.gles2.txt +++ b/tests/util/CMakeLists.gles2.txt @@ -4,6 +4,7 @@ set(UTIL_GL_SOURCES piglit-shader-gles2.c piglit-util-gl-enum.c piglit-util-gles.c + minmax-test.c ) include_directories( diff --git a/tests/util/minmax-test.c b/tests/util/minmax-test.c index 9534b182d..7eea91705 100644 --- a/tests/util/minmax-test.c +++ b/tests/util/minmax-test.c @@ -65,6 +65,7 @@ piglit_report_uint(const char *name, GLuint limit, GLuint val, bool pass) printf("\n"); } +#if !defined(PIGLIT_USE_OPENGL_ES2) static void piglit_report_int64(const char *name, GLint64 limit, GLint64 val, bool pass) { @@ -86,6 +87,7 @@ piglit_report_uint64(const char *name, GLuint64 limit, GLuint64 val, bool pass) } printf("\n"); } +#endif /* !PIGLIT_USE_OPENGL_ES2 */ static void piglit_report_float(const char *name, GLfloat limit, GLfloat val, bool pass) @@ -125,6 +127,7 @@ piglit_test_uint(GLenum token, GLuint limit, bool max) (!max && val >= limit)); } +#if !defined(PIGLIT_USE_OPENGL_ES2) static void piglit_test_int64(GLenum token, GLint64 limit, bool max) { @@ -163,6 +166,7 @@ piglit_test_uint64(GLenum token, GLuint64 limit, bool max) (max && val <= limit) || (!max && val >= limit)); } +#endif /* !PIGLIT_USE_OPENGL_ES2 */ void piglit_test_min_int(GLenum token, GLint min) { @@ -184,6 +188,7 @@ void piglit_test_max_uint(GLenum token, GLuint max) piglit_test_uint(token, max, true); } +#if !defined(PIGLIT_USE_OPENGL_ES2) void piglit_test_min_int64(GLenum token, GLint64 min) { piglit_test_int64(token, min, false); @@ -203,6 +208,7 @@ void piglit_test_max_uint64(GLenum token, GLuint64 max) { piglit_test_uint64(token, max, true); } +#endif /* !PIGLIT_USE_OPENGL_ES2 */ static void piglit_test_float(GLenum token, GLfloat limit, bool max) diff --git a/tests/util/minmax-test.h b/tests/util/minmax-test.h index a2611479e..1206716a2 100644 --- a/tests/util/minmax-test.h +++ b/tests/util/minmax-test.h @@ -27,15 +27,18 @@ void piglit_test_min_int(GLenum token, GLint val); void piglit_test_max_int(GLenum token, GLint val); void piglit_test_min_uint(GLenum token, GLuint val); void piglit_test_max_uint(GLenum token, GLuint val); -void piglit_test_min_int64(GLenum token, GLint64 min); -void piglit_test_max_int64(GLenum token, GLint64 min); -void piglit_test_min_uint64(GLenum token, GLuint64 min); -void piglit_test_max_uint64(GLenum token, GLuint64 min); void piglit_test_min_float(GLenum token, GLfloat val); void piglit_test_max_float(GLenum token, GLfloat val); void piglit_test_range_float(GLenum token, GLfloat low, GLfloat high); void piglit_test_min_viewport_dimensions(); +#if !defined(PIGLIT_USE_OPENGL_ES2) +void piglit_test_min_int64(GLenum token, GLint64 min); +void piglit_test_max_int64(GLenum token, GLint64 min); +void piglit_test_min_uint64(GLenum token, GLuint64 min); +void piglit_test_max_uint64(GLenum token, GLuint64 min); +#endif /* !PIGLIT_USE_OPENGL_ES2 */ + #ifdef PIGLIT_USE_OPENGL void piglit_test_oq_bits(void); void piglit_test_tf_bits(GLenum target); |