[Piglit] [PATCH v4 4/4] arb_instanced_arrays: test instanced_arrays with VBOs

Brian Paul brian.e.paul at gmail.com
Tue May 29 07:43:45 PDT 2012


On Sun, May 27, 2012 at 10:37 PM, Jordan Justen
<jordan.l.justen at intel.com> wrote:
> The new test named instanced_arrays-vbo which adds a vbo
> parameter when running the instanced_arrays test. This
> will cause the test to run while using VBOs.
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
>  tests/all.tests                                    |    1 +
>  tests/spec/arb_instanced_arrays/instanced_arrays.c |   47 +++++++++++++++++---
>  2 files changed, 41 insertions(+), 7 deletions(-)
>
> diff --git a/tests/all.tests b/tests/all.tests
> index 374f8cf..892ee39 100644
> --- a/tests/all.tests
> +++ b/tests/all.tests
> @@ -1682,6 +1682,7 @@ add_plain_test(ati_envmap_bumpmap, 'ati_envmap_bumpmap-bump')
>  arb_instanced_arrays = Group()
>  spec['ARB_instanced_arrays'] = arb_instanced_arrays
>  add_plain_test(arb_instanced_arrays, 'instanced_arrays')
> +add_single_param_test_set(arb_instanced_arrays, 'instanced_arrays', 'vbo')
>
>  arb_map_buffer_range = Group()
>  spec['ARB_map_buffer_range'] = arb_map_buffer_range
> diff --git a/tests/spec/arb_instanced_arrays/instanced_arrays.c b/tests/spec/arb_instanced_arrays/instanced_arrays.c
> index ce8318f..d6c14bc 100644
> --- a/tests/spec/arb_instanced_arrays/instanced_arrays.c
> +++ b/tests/spec/arb_instanced_arrays/instanced_arrays.c
> @@ -61,6 +61,8 @@ static const char *FragShaderText =
>
>  static GLuint VertShader, FragShader, Program;
>
> +static GLboolean use_vbo = GL_FALSE;
> +
>  static const GLfloat Positions[PRIMS][2] = {
>    { -6, 6 },
>    { -4, 4 },
> @@ -90,14 +92,39 @@ test_instancing(GLuint divisor)
>    static const GLfloat verts[4][2] = {
>       {-1, -1}, {1, -1}, {1, 1}, {-1, 1}
>    };
> -
> -   glVertexPointer(2, GL_FLOAT, 0, verts);
> -   glEnableClientState(GL_VERTEX_ARRAY);
> +   GLuint vbo;
> +   uintptr_t offset = 0;
> +
> +   if (use_vbo) {
> +      glGenBuffers(1, &vbo);
> +      glBindBuffer(GL_ARRAY_BUFFER, vbo);
> +      glBufferData(GL_ARRAY_BUFFER,
> +                   sizeof(verts) + sizeof(Positions) + sizeof(Colors),
> +                   NULL,
> +                   GL_STATIC_DRAW);
> +      glBufferSubData(GL_ARRAY_BUFFER, offset, sizeof(verts), verts);
> +      glVertexPointer(2, GL_FLOAT, 0, (void*) offset);
> +      offset += sizeof(verts);
> +
> +      glBufferSubData(GL_ARRAY_BUFFER, offset, sizeof(Positions), Positions);
> +      glVertexAttribPointer(PosAttrib, 2, GL_FLOAT, GL_FALSE, 0, (void*) offset);
> +      offset += sizeof(Positions);
> +
> +      glBufferSubData(GL_ARRAY_BUFFER, offset, sizeof(Colors), Colors);
> +      glVertexAttribPointer(ColorAttrib, 4, GL_FLOAT, GL_FALSE, 0, (void*) offset);
> +      offset += sizeof(Colors);
> +
> +      glBindBuffer(GL_ARRAY_BUFFER, 0);
> +   } else {
> +      glVertexPointer(2, GL_FLOAT, 0, verts);
> +      glVertexAttribPointer(PosAttrib, 2, GL_FLOAT, GL_FALSE, 0, Positions);
> +      glVertexAttribPointer(ColorAttrib, 4, GL_FLOAT, GL_FALSE, 0, Colors);
> +   }
>
> -   glVertexAttribPointer(PosAttrib, 2, GL_FLOAT, GL_FALSE, 0, Positions);
> -   glVertexAttribPointer(ColorAttrib, 4, GL_FLOAT, GL_FALSE, 0, Colors);
> +   glEnableClientState(GL_VERTEX_ARRAY);
>    glEnableVertexAttribArray(PosAttrib);
>    glEnableVertexAttribArray(ColorAttrib);
> +
>    glVertexAttribDivisorARB(PosAttrib, 1);
>    /* advance color once every 'n' instances */
>    glVertexAttribDivisorARB(ColorAttrib, divisor);
> @@ -110,6 +137,10 @@ test_instancing(GLuint divisor)
>
>    glUseProgram(0);
>
> +   if (use_vbo) {
> +      glDeleteBuffers(1, &vbo);
> +   }
> +
>    {
>       GLint i;
>       GLint pos[4];
> @@ -136,8 +167,6 @@ test_instancing(GLuint divisor)
>    glDisableVertexAttribArray(PosAttrib);
>    glDisableVertexAttribArray(ColorAttrib);
>
> -   glutSwapBuffers();
> -

Why are you removing the SwapBuffers?  It's nice to be able to see the
results on-screen when debugging.

Replacing glutSwapBuffers() with piglit_present_results() would be good, btw.

-Brian


More information about the Piglit mailing list