[Mesa-dev] [PATCH] st/mesa: fix missing setting of _ElementSize in new_draw_rasterpos_stage

Brian Paul brianp at vmware.com
Thu Apr 26 17:07:21 UTC 2018


Reviewed-by: Brian Paul <brianp at vmware.com>

On 04/26/2018 10:29 AM, Charmaine Lee wrote:
> With this patch, _ElementSize is initialized along with the rest
> of the vertex array attributes in new_draw_rasterpos_stage().
> This fixes a crash in st_pipe_vertex_format() when running
> topogun-1.06-orc-84k-resize trace file with VMware svga driver.
> ---
>   src/mesa/state_tracker/st_cb_rasterpos.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c
> index 4e5417b..b73d543 100644
> --- a/src/mesa/state_tracker/st_cb_rasterpos.c
> +++ b/src/mesa/state_tracker/st_cb_rasterpos.c
> @@ -40,6 +40,7 @@
>   #include "main/macros.h"
>   #include "main/feedback.h"
>   #include "main/rastpos.h"
> +#include "glformats.h"
>   
>   #include "st_context.h"
>   #include "st_atom.h"
> @@ -182,6 +183,7 @@ new_draw_rastpos_stage(struct gl_context *ctx, struct draw_context *draw)
>   {
>      struct rastpos_stage *rs = ST_CALLOC_STRUCT(rastpos_stage);
>      GLuint i;
> +   GLuint elementSize;
>   
>      rs->stage.draw = draw;
>      rs->stage.next = NULL;
> @@ -196,12 +198,15 @@ new_draw_rastpos_stage(struct gl_context *ctx, struct draw_context *draw)
>   
>      rs->binding.Stride = 0;
>      rs->binding.BufferObj = NULL;
> +
> +   elementSize = _mesa_bytes_per_vertex_attrib(4, GL_FLOAT);
>      for (i = 0; i < ARRAY_SIZE(rs->array); i++) {
>         rs->attrib[i].Size = 4;
>         rs->attrib[i].Type = GL_FLOAT;
>         rs->attrib[i].Format = GL_RGBA;
>         rs->attrib[i].Ptr = (GLubyte *) ctx->Current.Attrib[i];
>         rs->attrib[i].Normalized = GL_TRUE;
> +      rs->attrib[i]._ElementSize = elementSize;
>         rs->array[i].BufferBinding = &rs->binding;
>         rs->array[i].VertexAttrib = &rs->attrib[i];
>      }
> 



More information about the mesa-dev mailing list