[Piglit] [PATCH 2/4] util: Make an even simpler interface for building simple shaders.

Brian Paul brianp at vmware.com
Wed May 8 16:07:25 PDT 2013


On 05/08/2013 03:02 PM, Eric Anholt wrote:
> The previous piglit_link_simple_program() interface required you to
> compile your shaders up front, and tests routinely have issues with
> either not checking that the component shaders compiled, or not
> checking that the program linked, and then confusingly fail later in
> the test.  This one enforces that the program actually compiled and
> linked before continuing, so you don't need to worry about error
> checking.
> ---
>   tests/util/piglit-shader.c | 35 +++++++++++++++++++++++++++++++++++
>   tests/util/piglit-shader.h |  1 +
>   2 files changed, 36 insertions(+)
>
> diff --git a/tests/util/piglit-shader.c b/tests/util/piglit-shader.c
> index ca48f41..d715bab 100644
> --- a/tests/util/piglit-shader.c
> +++ b/tests/util/piglit-shader.c
> @@ -263,3 +263,38 @@ GLint piglit_link_simple_program(GLint vs, GLint fs)
>
>   	return prog;
>   }
> +
> +/**
> + * Builds and links a program from optional VS and FS sources,
> + * throwing PIGLIT_FAIL on error.
> + */
> +GLint
> +piglit_build_simple_program(const char *vs_source, const char *fs_source)

How would you feel about adding a gs_source for geometry shaders too?

Otherwise,
Reviewed-by: Brian Paul <brianp at vmware.com>


> +{
> +	GLuint vs = 0, fs = 0, prog;
> +
> +	if (vs_source) {
> +		vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vs_source);
> +		if (!vs) {
> +			piglit_report_result(PIGLIT_FAIL);
> +		}
> +	}
> +
> +	if (fs_source) {
> +		fs = piglit_compile_shader_text(GL_FRAGMENT_SHADER, fs_source);
> +		if (!fs) {
> +			piglit_report_result(PIGLIT_FAIL);
> +		}
> +	}
> +
> +	prog = piglit_link_simple_program(vs, fs);
> +	if (!prog)
> +		piglit_report_result(PIGLIT_FAIL);
> +
> +	if (fs)
> +		glDeleteShader(fs);
> +	if (vs)
> +		glDeleteShader(vs);
> +
> +	return prog;
> +}
> diff --git a/tests/util/piglit-shader.h b/tests/util/piglit-shader.h
> index 12cf731..425eab3 100644
> --- a/tests/util/piglit-shader.h
> +++ b/tests/util/piglit-shader.h
> @@ -35,6 +35,7 @@ GLuint piglit_compile_shader_text(GLenum target, const char *text);
>   GLboolean piglit_link_check_status(GLint prog);
>   GLboolean piglit_link_check_status_quiet(GLint prog);
>   GLint piglit_link_simple_program(GLint vs, GLint fs);
> +GLint piglit_build_simple_program(const char *vs_source, const char *fs_source);
>
>   #if defined(PIGLIT_USE_OPENGL_ES1)
>   #define glAttachShader assert(!"glAttachShader does not exist in ES1")



More information about the Piglit mailing list