[Piglit] [PATCH 1/6] Simple framework for GLSL linker tests

Chad Versace chad at chad-versace.us
Mon Oct 31 11:49:59 PDT 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 10/28/2011 03:26 PM, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
> 
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>  tests/shaders/CMakeLists.gl.txt |    1 +
>  tests/shaders/glsl-link-test.c  |  126 +++++++++++++++++++++++++++++++++++++++
>  2 files changed, 127 insertions(+), 0 deletions(-)
>  create mode 100644 tests/shaders/glsl-link-test.c
> 
> diff --git a/tests/shaders/CMakeLists.gl.txt b/tests/shaders/CMakeLists.gl.txt
> index 3dce256..1bf73e8 100644
> --- a/tests/shaders/CMakeLists.gl.txt
> +++ b/tests/shaders/CMakeLists.gl.txt
> @@ -126,6 +126,7 @@ add_executable (glsl-link-initializer-06 glsl-link-initializer-06.c)
>  add_executable (glsl-link-invariant-01 glsl-link-invariant-01.c)
>  add_executable (glsl-link-centroid-01 glsl-link-centroid-01.c)
>  add_executable (glsl-link-struct-array glsl-link-struct-array.c)
> +add_executable (glsl-link-test glsl-link-test.c)
>  add_executable (gpu_shader4_attribs gpu_shader4_attribs.c)
>  add_executable (vp-address-01 vp-address-01.c)
>  add_executable (vp-address-02 vp-address-02.c)
> diff --git a/tests/shaders/glsl-link-test.c b/tests/shaders/glsl-link-test.c
> new file mode 100644
> index 0000000..7e252df
> --- /dev/null
> +++ b/tests/shaders/glsl-link-test.c
> @@ -0,0 +1,126 @@
> +/*
> + * Copyright © 2011 Intel Corporation
> + *
> + * 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.
> + */
> +
> +/**
> + * \file glsl-link-test.c
> + * Try to link a set of shaders, check if the result matches the expectation
> + *
> + * \author Ian Romanick
> + */
> +
> +#include "piglit-util.h"
> +
> +int piglit_width = 100, piglit_height = 100;
> +int piglit_window_mode = GLUT_RGB | GLUT_DOUBLE;
> +
> +enum piglit_result
> +piglit_display(void)
> +{
> +	return PIGLIT_FAIL;
> +}
> +
> +void piglit_init(int argc, char **argv)
> +{
> +	GLint program;
> +	bool expect;
> +	bool result;
> +	unsigned i;
> +	const char *invalid_file = NULL;
> +
> +	if (!GLEW_VERSION_2_0) {
> +		printf("Requires OpenGL 2.0\n");
> +		piglit_report_result(PIGLIT_SKIP);
> +	}
> +
> +	piglit_require_GLSL();
> +	program = piglit_CreateProgram();
> +
> +	for (i = 1; i < argc; i++) {
> +		size_t len;
> +		GLint shader;
> +		GLenum target;
> +
> +		if (strcmp(argv[i], "pass") == 0) {
> +			expect = true;
> +			break;
> +		}
> +
> +		if (strcmp(argv[i], "fail") == 0) {
> +			expect = false;
> +			break;
> +		}

There is undefined behavior here. If one forgets to give "pass" or "fail" on
the command line, then 'expect' is undefined. In that case, the test should
fail with in informative message.

Also, it should be an error if a user accidentally gives more than one
expected result, like this.
   glsl-link-test pass a.vert b.vert c.vert fail


- -- 
Chad Versace
chad at chad-versace.us
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJOru3WAAoJEAIvNt057x8iX1gQAJwbJr7ETUjjggS5xeTMEDtk
rQ2LLhOkY5WJP2ARQDrigNmvSXxDOBk6J/WKV+wTHQX3wD5eC/YZLki7PWGqCH2u
yAMF8Te6cNVNSw6renqfQdRrcxwGTcedDuOu8W64KB1Ps1kjiUkRGd1dWwqCMAXM
uhArj/pmC2rrpJULAUdkTQpp54HWxtZwYaO8k1C9/H1DPSrGF/HA2AAkJPCgtMM8
Y+DVsxTGfWTqfbwuJ9+15fAq+KJpeLSN+zKRDNfN7gL9+UtJtCPIJMJYFeIfkX/5
gDPGeWbfJuVRa8Brbq9WW/umd8dGdkyQl4NaGdyClDWKt9JwEoXpzRTYaGMD50+p
lOzVHXMF4+lJKD9dOkRjB6hF2W+ov+OnBB11xBRol7X/5A0bkXaL+fsYddVMSza0
2vKMsNKNdkkW2cG28Bb4sespSHGZGmK9ERPMFlCg9QUZO2hiW56i0Yht6/A7rja+
/tbSqjZRiP9FeWYLeEaW/O3lqfmpojYUrmCRfTkamSaKkJQCVYVH1xlmzvcLahsF
NyKeps/54EpHe+Z8wHRn/4VVoKhbdSsAcvt4P1p+bxre3EUKbsk+JCJBtLZEXtMS
D4rs41crtPXXoHcToMTHEXv1v0rp2NhrIe0Hu0Fyd/zzB153ygPgYVnXvzgMddbr
Yyj47TS2rTESg3erBYMd
=YHlO
-----END PGP SIGNATURE-----


More information about the Piglit mailing list