[Piglit] [PATCH 1/8] shader_runner: delay error for program link / use to piglit_display

Paul Berry stereotype441 at gmail.com
Fri Feb 22 09:54:47 PST 2013


On 17 February 2013 10:31, Jordan Justen <jordan.l.justen at intel.com> wrote:

> To prepare for supporting negative linker tests.
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
>  tests/shaders/shader_runner.c |   48
> +++++++++++++++++++++++++----------------
>  1 file changed, 30 insertions(+), 18 deletions(-)
>
> diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
> index eae5063..2293b9e 100644
> --- a/tests/shaders/shader_runner.c
> +++ b/tests/shaders/shader_runner.c
> @@ -97,6 +97,9 @@ const char *vertex_data_start = NULL;
>  const char *vertex_data_end = NULL;
>  GLuint prog;
>  size_t num_vbo_rows = 0;
> +bool link_ok = false;
> +bool prog_in_use = false;
> +GLchar *prog_err_info = NULL;
>
>  enum states {
>         none = 0,
> @@ -319,6 +322,8 @@ compile_and_bind_program(GLenum target, const char
> *start, int len)
>
>         glEnable(target);
>         glBindProgramARB(target, prog);
> +       link_ok = true;
> +       prog_in_use = true;
>  }
>
>  /**
> @@ -789,38 +794,31 @@ link_and_use_shaders(void)
>         }
>
>         glGetProgramiv(prog, GL_LINK_STATUS, &ok);
> -       if (!ok) {
> -               GLchar *info;
> +       if (ok) {
> +               link_ok = true;
> +       } else {
>                 GLint size;
>
>                 glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size);
> -               info = malloc(size);
> -
> -               glGetProgramInfoLog(prog, size, NULL, info);
> +               prog_err_info = malloc(size);
>
> -               fprintf(stderr, "Failed to link:\n%s\n",
> -                       info);
> +               glGetProgramInfoLog(prog, size, NULL, prog_err_info);
>
> -               free(info);
> -               piglit_report_result(PIGLIT_FAIL);
> +               return;
>         }
>
>         glUseProgram(prog);
>
>         err = glGetError();
> -       if (err) {
> -               GLchar *info;
> +       if (!err) {
> +               prog_in_use = true;
> +       } else {
>                 GLint size;
>
> -               printf("GL error after linking program: 0x%04x\n", err);
> -
>                 glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size);
> -               info = malloc(size);
> -
> -               glGetProgramInfoLog(prog, size, NULL, info);
> -               fprintf(stderr, "Info log: %s\n", info);
> +               prog_err_info = malloc(size);
>
> -               piglit_report_result(PIGLIT_FAIL);
> +               glGetProgramInfoLog(prog, size, NULL, prog_err_info);
>         }
>  }
>
> @@ -1638,6 +1636,19 @@ setup_ubos()
>         }
>  }
>
> +void
> +program_must_be_in_use(void)
> +{
> +       if (!link_ok) {
> +               fprintf(stderr, "Failed to link:\n%s\n", prog_err_info);
> +               piglit_report_result(PIGLIT_FAIL);
> +       } else if (!prog_in_use) {
> +               fprintf(stderr, "Failed to use shader: %s\n",
> prog_err_info);
>

I think "Failed to use program" would be a clearer error message here.
"Shader" generally refers to the things that are present prior to linking.

With that change, this patch is:

Reviewed-by: Paul Berry <stereotype441 at gmail.com>


> +               piglit_report_result(PIGLIT_FAIL);
> +       }
> +
> +}
> +
>  enum piglit_result
>  piglit_display(void)
>  {
> @@ -1648,6 +1659,7 @@ piglit_display(void)
>         if (test_start == NULL)
>                 return PIGLIT_PASS;
>
> +       program_must_be_in_use();
>
>         line = test_start;
>         while (line[0] != '\0') {
> --
> 1.7.10.4
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20130222/92d3dd71/attachment-0001.html>


More information about the Piglit mailing list