diff options
| author | Roland Scheidegger <sroland@vmware.com> | 2015-04-23 18:13:32 +0200 |
|---|---|---|
| committer | Roland Scheidegger <sroland@vmware.com> | 2015-04-23 18:14:22 +0200 |
| commit | f2a7fd9943fcb7d3de3bc2b21907e0a157b88e96 (patch) | |
| tree | c78b68e99367f1c96b89edee88840cef25c3d9d6 /src/gallium/auxiliary/draw/draw_prim_assembler.c | |
| parent | ecc7f2ed910345c4dd0d02ac9c72d69f10ac5572 (diff) | |
| download | external_mesa3d-f2a7fd9943fcb7d3de3bc2b21907e0a157b88e96.tar.gz external_mesa3d-f2a7fd9943fcb7d3de3bc2b21907e0a157b88e96.tar.bz2 external_mesa3d-f2a7fd9943fcb7d3de3bc2b21907e0a157b88e96.zip | |
draw: fix prim ids when there's no gs
We were resetting the prim id count for each run of the prim assembler,
hence this only worked when the draw calls were very small (the exact limit
depending on the vertex size), since larger draw calls get split up.
So, do the same as we do already if there's a gs, reset it to zero explicitly
for every new instance (this possibly could use the same variable but that
isn't doable without some heavy refactoring and I'm not sure it makes sense).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90130.
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
CC: <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_prim_assembler.c')
| -rw-r--r-- | src/gallium/auxiliary/draw/draw_prim_assembler.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/draw/draw_prim_assembler.c b/src/gallium/auxiliary/draw/draw_prim_assembler.c index 776c172621..7ff705a91a 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; +} |
