On 09/16/2013 07:54 AM, Topi Pohjolainen wrote:
> Make feedback buffer probe accessible also for other tests.
> Original behavior is altered not to print matching values
> anymore.
> 
> Signed-off-by: Topi Pohjolainen <[email protected]>
> ---
>  tests/spec/ext_transform_feedback/separate.c | 30 
> ++++++++--------------------
>  tests/util/piglit-util-gl-common.h           |  4 ++++
>  tests/util/piglit-util-gl.c                  | 24 ++++++++++++++++++++++
>  3 files changed, 36 insertions(+), 22 deletions(-)
> 
> diff --git a/tests/spec/ext_transform_feedback/separate.c 
> b/tests/spec/ext_transform_feedback/separate.c
> index e410be8..3816d76 100644
> --- a/tests/spec/ext_transform_feedback/separate.c
> +++ b/tests/spec/ext_transform_feedback/separate.c
> @@ -116,25 +116,11 @@ void piglit_init(int argc, char **argv)
>       glEnableClientState(GL_VERTEX_ARRAY);
>  }
>  
> -static GLboolean probe_buffer(GLuint buf, int bufindex, unsigned comps, 
> const float *expected)
> +static GLboolean probe_buffer(GLuint buf, const char *label, unsigned comps,
> +                           const float *expected)
>  {
> -     float *ptr;
> -     unsigned i;
> -     GLboolean status = GL_TRUE;
> -
> -     glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER_EXT, buf);
> -     ptr = glMapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER_EXT, GL_READ_ONLY);
> -     for (i = 0; i < NUM_OUT_VERTICES*comps; i++) {
> -             if (fabs(ptr[i] - expected[i % comps]) > 0.01) {
> -                     printf("Buffer[%i][%i]: %f,  Expected: %f\n", bufindex, 
> i, ptr[i], expected[i % comps]);
> -                     status = GL_FALSE;
> -             } else {
> -                     printf("Buffer[%i][%i]: %f,  Expected: %f -- OK\n", 
> bufindex, i, ptr[i], expected[i % comps]);
> -
> -             }
> -     }
> -     glUnmapBuffer(GL_TRANSFORM_FEEDBACK_BUFFER_EXT);
> -     return status;
> +     return piglit_probe_buffer(buf, GL_TRANSFORM_FEEDBACK_BUFFER_EXT, label,
> +                             NUM_OUT_VERTICES, comps, expected);
>  }

Rather than leave probe_buffer as a thin wrapper around
piglit_probe_buffer, I'd just change the existing callers to the new
function.

>  enum piglit_result piglit_display(void)
> @@ -165,10 +151,10 @@ enum piglit_result piglit_display(void)
>  
>       assert(glGetError() == 0);
>  
> -     pass = probe_buffer(buf[0], 0, 3, v3) && pass;
> -     pass = probe_buffer(buf[1], 1, 4, frontcolor) && pass;
> -     pass = probe_buffer(buf[2], 2, 2, v2) && pass;
> -     pass = probe_buffer(buf[3], 3, 4, texcoord1) && pass;
> +     pass = probe_buffer(buf[0], "Buffer[0]", 3, v3) && pass;
> +     pass = probe_buffer(buf[1], "Buffer[1]", 4, frontcolor) && pass;
> +     pass = probe_buffer(buf[2], "Buffer[2]", 2, v2) && pass;
> +     pass = probe_buffer(buf[3], "Buffer[3]", 4, texcoord1) && pass;
>  
>       assert(glGetError() == 0);
>  
> diff --git a/tests/util/piglit-util-gl-common.h 
> b/tests/util/piglit-util-gl-common.h
> index e7d0797..5852f01 100644
> --- a/tests/util/piglit-util-gl-common.h
> +++ b/tests/util/piglit-util-gl-common.h
> @@ -150,6 +150,10 @@ int piglit_probe_pixel_stencil(int x, int y, unsigned 
> expected);
>  int piglit_probe_rect_stencil(int x, int y, int w, int h, unsigned expected);
>  int piglit_probe_rect_halves_equal_rgba(int x, int y, int w, int h);
>  
> +int piglit_probe_buffer(GLuint buf, GLenum target, const char *label,
> +                     unsigned n, unsigned num_components,
> +                     const float *expected);
> +
>  int piglit_use_fragment_program(void);
>  int piglit_use_vertex_program(void);
>  void piglit_require_fragment_program(void);
> diff --git a/tests/util/piglit-util-gl.c b/tests/util/piglit-util-gl.c
> index 587c290..a8f6703 100644
> --- a/tests/util/piglit-util-gl.c
> +++ b/tests/util/piglit-util-gl.c
> @@ -706,6 +706,30 @@ int piglit_probe_texel_rgb(int target, int level, int x, 
> int y,
>       return piglit_probe_texel_rect_rgb(target, level, x, y, 1, 1, expected);
>  }
>  
> +int

Let's make this bool instead.

> +piglit_probe_buffer(GLuint buf, GLenum target, const char *label,
> +                 unsigned n, unsigned num_components, const float *expected)
> +{
> +     float *ptr;
> +     unsigned i;
> +     GLboolean status = GL_TRUE;
> +
> +     glBindBuffer(target, buf);
> +     ptr = glMapBuffer(target, GL_READ_ONLY);
> +
> +     for (i = 0; i < n * num_components; i++) {
> +             if (fabs(ptr[i] - expected[i % num_components]) > 0.01) {
> +                     printf("%s[%i]: %f, Expected: %f\n", label, i, ptr[i],
> +                             expected[i % num_components]);
> +                     status = GL_FALSE;
> +             }
> +     }
> +
> +     glUnmapBuffer(target);
> +
> +     return status;
> +}
> +
>  int piglit_use_fragment_program(void)
>  {
>       static const char source[] =
> 

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to