On Thu, Aug 18, 2016 at 7:50 PM,  <mathias.froehl...@gmx.net> wrote:
> From: Mathias Fröhlich <mathias.froehl...@web.de>
>
> Hi,
>
> I found the below while fixing a similar problem lately in
> the immediate mode glBegin/glEnd code path.
>
> Please review
> Thanks
>
> Mathias
>
>
>
> When executing a display list draw with a shader program
> using the generic0 attribute the offset computation
> may get out of sync. To fix precompute the offsets
> on the full attribute list and store the offsets in
> the display list node.
>
> Signed-off-by: Mathias Fröhlich <mathias.froehl...@web.de>
> ---
>  src/mesa/vbo/vbo_save.h      |  1 +
>  src/mesa/vbo/vbo_save_api.c  |  6 ++++++
>  src/mesa/vbo/vbo_save_draw.c | 35 +++++++++++++++++------------------
>  3 files changed, 24 insertions(+), 18 deletions(-)
>
> diff --git a/src/mesa/vbo/vbo_save.h b/src/mesa/vbo/vbo_save.h
> index 2843b3c..a61973f 100644
> --- a/src/mesa/vbo/vbo_save.h
> +++ b/src/mesa/vbo/vbo_save.h
> @@ -64,6 +64,7 @@ struct vbo_save_vertex_list {
>     GLbitfield64 enabled; /**< mask of enabled vbo arrays. */
>     GLubyte attrsz[VBO_ATTRIB_MAX];
>     GLenum attrtype[VBO_ATTRIB_MAX];
> +   GLushort offsets[VBO_ATTRIB_MAX];
>     GLuint vertex_size;  /**< size in GLfloats */
>
>     /* Copy of the final vertex from node->vertex_store->bufferobj.
> diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c
> index f648ccc..4473fef 100644
> --- a/src/mesa/vbo/vbo_save_api.c
> +++ b/src/mesa/vbo/vbo_save_api.c
> @@ -436,6 +436,12 @@ _save_compile_vertex_list(struct gl_context *ctx)
>     node->vertex_size = save->vertex_size;
>     node->buffer_offset =
>        (save->buffer - save->vertex_store->buffer) * sizeof(GLfloat);
> +   GLushort offset = 0;
> +   int i;
> +   for (i = 0; i < VBO_ATTRIB_MAX; ++i) {
> +      node->offsets[i] = offset;
> +      offset += node->attrsz[i] * sizeof(GLfloat);
> +   }

I'm not sure what the policy regarding C99 is ATM, but this seems to
introduce declaration-after-statement for the first time in this
source.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to