diff options
-rw-r--r-- | src/gallium/auxiliary/draw/draw_context.c | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_prim_assembler.c | 13 | ||||
-rw-r--r-- | src/gallium/auxiliary/draw/draw_prim_assembler.h | 3 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index 04cf5b7630e..ee009c1fb71 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -182,6 +182,7 @@ boolean draw_init(struct draw_context *draw) void draw_new_instance(struct draw_context *draw) { draw_geometry_shader_new_instance(draw->gs.geometry_shader); + draw_prim_assembler_new_instance(draw->ia); } diff --git a/src/gallium/auxiliary/draw/draw_prim_assembler.c b/src/gallium/auxiliary/draw/draw_prim_assembler.c index 776c1726217..7ff705a91a5 100644 --- a/src/gallium/auxiliary/draw/draw_prim_assembler.c +++ b/src/gallium/auxiliary/draw/draw_prim_assembler.c @@ -189,7 +189,6 @@ draw_prim_assembler_prepare_outputs(struct draw_assembler *ia) } else { ia->primid_slot = -1; } - ia->primid = 0; } @@ -233,7 +232,6 @@ draw_prim_assembler_run(struct draw_context *draw, asmblr->input_prims = input_prims; asmblr->input_verts = input_verts; asmblr->needs_primid = needs_primid(asmblr->draw); - asmblr->primid = 0; asmblr->num_prims = 0; output_prims->linear = TRUE; @@ -284,3 +282,14 @@ draw_prim_assembler_destroy(struct draw_assembler *ia) { FREE(ia); } + + +/* + * Called at the very begin of the draw call with a new instance + * Used to reset state that should persist between primitive restart. + */ +void +draw_prim_assembler_new_instance(struct draw_assembler *asmblr) +{ + asmblr->primid = 0; +} diff --git a/src/gallium/auxiliary/draw/draw_prim_assembler.h b/src/gallium/auxiliary/draw/draw_prim_assembler.h index 5ba715b8135..5ee731750f7 100644 --- a/src/gallium/auxiliary/draw/draw_prim_assembler.h +++ b/src/gallium/auxiliary/draw/draw_prim_assembler.h @@ -70,5 +70,8 @@ draw_prim_assembler_run(struct draw_context *draw, void draw_prim_assembler_prepare_outputs(struct draw_assembler *ia); +void +draw_prim_assembler_new_instance(struct draw_assembler *ia); + #endif |