[Piglit] [PATCH 3/4] shader_runner: Add the ability to set hints.

Ian Romanick idr at freedesktop.org
Tue Oct 1 13:08:04 PDT 2013


On 10/01/2013 12:32 PM, Paul Berry wrote:
> ---
>  tests/shaders/shader_runner.c | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
> index 8e72fdf..a28e8a8 100644
> --- a/tests/shaders/shader_runner.c
> +++ b/tests/shaders/shader_runner.c
> @@ -1426,6 +1426,29 @@ do_enable_disable(const char *line, bool enable_flag)
>  		glDisable(value);
>  }
>  
> +struct string_to_enum hint_target_table[] = {
> +	{ "GL_LINE_SMOOTH_HINT", GL_LINE_SMOOTH_HINT },
> +	{ "GL_POLYGON_SMOOTH_HINT", GL_POLYGON_SMOOTH_HINT },
> +	{ "GL_TEXTURE_COMPRESSION_HINT", GL_TEXTURE_COMPRESSION_HINT },
> +	{ "GL_FRAGMENT_SHADER_DERIVATIVE_HINT",
> +	  GL_FRAGMENT_SHADER_DERIVATIVE_HINT },
> +};

I've always preferred wrapping this with a macro:

#define ENUM_STRING(e) { # e , e }

Nothing is more annoying than typing the string wrong but getting the
enum correct.  Not that I've ever done that before... :(

> +
> +struct string_to_enum hint_param_table[] = {
> +	{ "GL_FASTEST", GL_FASTEST },
> +	{ "GL_NICEST", GL_NICEST },
> +	{ "GL_DONT_CARE", GL_DONT_CARE },
> +};
> +
> +void do_hint(const char *line)
> +{
> +	GLenum target = lookup_enum_string(hint_target_table, &line,
> +					   "hint target");
> +	GLenum param = lookup_enum_string(hint_param_table, &line,
> +					  "hint param");
> +	glHint(target, param);
> +}
> +
>  static void
>  draw_instanced_rect(int primcount, float x, float y, float w, float h)
>  {
> @@ -1696,6 +1719,8 @@ piglit_display(void)
>  			get_floats(line + 7, c, 6);
>  			piglit_frustum_projection(false, c[0], c[1], c[2],
>  						  c[3], c[4], c[5]);
> +		} else if (string_match("hint", line)) {
> +			do_hint(line + 4);
>  		} else if (sscanf(line, "ortho %f %f %f %f",
>  				  c + 0, c + 1, c + 2, c + 3) == 4) {
>  			piglit_gen_ortho_projection(c[0], c[1], c[2], c[3],
> 



More information about the Piglit mailing list