On Tue, Dec 15, 2015 at 12:28 AM, Kristian Høgsberg Kristensen <[email protected]> wrote: > The drivers will need this for passing in gl_DrawIDARB. For indirect > multidraw calls, we get the prim array and prim[i].draw_id == i and is > redundant. But for non-indirect calls, we get one primitive at a time > and need the draw_id field. > --- > src/mesa/vbo/vbo.h | 1 + > src/mesa/vbo/vbo_exec_array.c | 5 +++++ > 2 files changed, 6 insertions(+) > > diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h > index 00e843c..cef3b8c 100644 > --- a/src/mesa/vbo/vbo.h > +++ b/src/mesa/vbo/vbo.h > @@ -58,6 +58,7 @@ struct _mesa_prim { > GLint basevertex; > GLuint num_instances; > GLuint base_instance; > + GLuint draw_id; > > GLsizeiptr indirect_offset; > }; > diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c > index e27fdd9..7ff78dc 100644 > --- a/src/mesa/vbo/vbo_exec_array.c > +++ b/src/mesa/vbo/vbo_exec_array.c > @@ -1,3 +1,4 @@ > + > /************************************************************************** > * > * Copyright 2003 VMware, Inc. > @@ -1341,6 +1342,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, > GLenum mode, > prim[i].indexed = 1; > prim[i].num_instances = 1; > prim[i].base_instance = 0; > + prim[i].draw_id = i; > prim[i].is_indirect = 0; > if (basevertex != NULL) > prim[i].basevertex = basevertex[i]; > @@ -1371,6 +1373,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, > GLenum mode, > prim[0].indexed = 1; > prim[0].num_instances = 1; > prim[0].base_instance = 0; > + prim[0].draw_id = i; > prim[0].is_indirect = 0; > if (basevertex != NULL) > prim[0].basevertex = basevertex[i]; > @@ -1598,6 +1601,7 @@ vbo_validated_multidrawarraysindirect(struct gl_context > *ctx, > prim[i].mode = mode; > prim[i].indirect_offset = offset; > prim[i].is_indirect = 1; > + prim[i].draw_id = i; > } > > check_buffers_are_unmapped(exec->array.inputs); > @@ -1684,6 +1688,7 @@ vbo_validated_multidrawelementsindirect(struct > gl_context *ctx, > prim[i].indexed = 1; > prim[i].indirect_offset = offset; > prim[i].is_indirect = 1; > + prim[i].draw_id = i; > } > > check_buffers_are_unmapped(exec->array.inputs); > -- > 2.5.0 > > _______________________________________________ > mesa-dev mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Reviewed-by: Anuj Phogat <[email protected]> _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
