[Piglit] [PATCH] arb_base_instance: Fix core profile problems in drawarrays test
Brian Paul
brianp at vmware.com
Thu Oct 16 07:47:51 PDT 2014
On 10/16/2014 03:26 AM, Chris Forbes wrote:
> - Must create and use a VAO.
> - Vertex attributes may not be sourced from client memory.
>
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
> tests/spec/arb_base_instance/drawarrays.c | 22 ++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/tests/spec/arb_base_instance/drawarrays.c b/tests/spec/arb_base_instance/drawarrays.c
> index 2386be4..140e3f7 100644
> --- a/tests/spec/arb_base_instance/drawarrays.c
> +++ b/tests/spec/arb_base_instance/drawarrays.c
> @@ -126,16 +126,26 @@ objpos_to_winpos(const float obj[2], int win[2])
> static bool
> test_instancing(GLuint divisor, GLuint baseInstance)
> {
> + GLuint verts_bo, colors_bo;
> +
> static const GLfloat verts[4][2] = {
> {-1, -1}, {1, -1}, {1, 1}, {-1, 1}
> };
> const GLuint numPrims = PRIMS - baseInstance;
> GLint i, pos[2];
>
> - glVertexAttribPointer(VertexAttrib, 2, GL_FLOAT, GL_FALSE, 0, verts);
> + glGenBuffers(1, &verts_bo);
> + glBindBuffer(GL_ARRAY_BUFFER, verts_bo);
> + glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
> +
> + glVertexAttribPointer(VertexAttrib, 2, GL_FLOAT, GL_FALSE, 0, 0);
> glEnableVertexAttribArray(VertexAttrib);
>
> - glVertexAttribPointer(ColorAttrib, 4, GL_FLOAT, GL_FALSE, 0, Colors);
> + glGenBuffers(1, &colors_bo);
> + glBindBuffer(GL_ARRAY_BUFFER, colors_bo);
> + glBufferData(GL_ARRAY_BUFFER, sizeof(Colors), Colors, GL_STATIC_DRAW);
> +
> + glVertexAttribPointer(ColorAttrib, 4, GL_FLOAT, GL_FALSE, 0, 0);
> glEnableVertexAttribArray(ColorAttrib);
> /* advance color once every 'n' instances */
> glVertexAttribDivisorARB(ColorAttrib, divisor);
> @@ -168,6 +178,9 @@ test_instancing(GLuint divisor, GLuint baseInstance)
> glDisableVertexAttribArray(VertexAttrib);
> glDisableVertexAttribArray(ColorAttrib);
>
> + glDeleteBuffers(1, &verts_bo);
> + glDeleteBuffers(1, &colors_bo);
> +
> piglit_present_results();
>
> return true;
> @@ -193,6 +206,8 @@ piglit_display(void)
> void
> piglit_init(int argc, char **argv)
> {
> + GLuint vao;
> +
> piglit_require_extension("GL_ARB_draw_instanced");
> piglit_require_extension("GL_ARB_instanced_arrays");
> piglit_require_extension("GL_ARB_base_instance");
> @@ -223,4 +238,7 @@ piglit_init(int argc, char **argv)
> piglit_matrix_mul_matrix(modelviewproj, modelview, projection);
>
> glUniformMatrix4fv(MVPUniform, 1, GL_FALSE, modelviewproj);
> +
> + glGenVertexArrays(1, &vao);
> + glBindVertexArray(vao);
> }
>
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the Piglit
mailing list