[Mesa-dev] [PATCH] mesa: Fix glGetVertexAttribI[u]iv now that we have real integer attribs.

Marek Olšák maraeo at gmail.com
Thu Nov 8 04:01:26 PST 2012


Reviewed-by: Marek Olšák <maraeo at gmail.com>

You can also use the COPY_4V macro like _mesa_GetVertexAttribfvARB
does if you want.

Marek

On Thu, Nov 8, 2012 at 5:59 AM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> Since cf438f5375e242, we store actual integers for the attribute data.
> We just need to reinterpret the GLfloat array as a GLint/GLuint array
> so we can read the proper data.
>
> Fixes oglconform's glsl-vertex-attrib/basic.VertexAttribI[1234][u]i
> subtests (after fixing an unrelated bug in those test cases).
>
> NOTE: This is a candidate for the stable branches.
>
> Cc: Marek Olšák <maraeo at gmail.com>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/main/varray.c | 22 ++++++++++------------
>  1 file changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
> index 522f5a7..505bee8 100644
> --- a/src/mesa/main/varray.c
> +++ b/src/mesa/main/varray.c
> @@ -701,14 +701,13 @@ _mesa_GetVertexAttribIiv(GLuint index, GLenum pname, GLint *params)
>     ASSERT_OUTSIDE_BEGIN_END(ctx);
>
>     if (pname == GL_CURRENT_VERTEX_ATTRIB_ARB) {
> -      const GLfloat *v =
> +      const GLint *v = (const GLint *)
>          get_current_attrib(ctx, index, "glGetVertexAttribIiv");
>        if (v != NULL) {
> -         /* XXX we don't have true integer-valued vertex attribs yet */
> -         params[0] = (GLint) v[0];
> -         params[1] = (GLint) v[1];
> -         params[2] = (GLint) v[2];
> -         params[3] = (GLint) v[3];
> +         params[0] = v[0];
> +         params[1] = v[1];
> +         params[2] = v[2];
> +         params[3] = v[3];
>        }
>     }
>     else {
> @@ -726,14 +725,13 @@ _mesa_GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint *params)
>     ASSERT_OUTSIDE_BEGIN_END(ctx);
>
>     if (pname == GL_CURRENT_VERTEX_ATTRIB_ARB) {
> -      const GLfloat *v =
> +      const GLuint *v = (const GLuint *)
>          get_current_attrib(ctx, index, "glGetVertexAttribIuiv");
>        if (v != NULL) {
> -         /* XXX we don't have true integer-valued vertex attribs yet */
> -         params[0] = (GLuint) v[0];
> -         params[1] = (GLuint) v[1];
> -         params[2] = (GLuint) v[2];
> -         params[3] = (GLuint) v[3];
> +         params[0] = v[0];
> +         params[1] = v[1];
> +         params[2] = v[2];
> +         params[3] = v[3];
>        }
>     }
>     else {
> --
> 1.8.0
>


More information about the mesa-dev mailing list