[Mesa-dev] [PATCH 2/2] draw/gs: Correctly iterate the emitted primitives
Jose Fonseca
jfonseca at vmware.com
Fri Mar 8 05:25:19 PST 2013
----- Original Message -----
> We were assuming that each emitted primitive had the same
> number of vertices. That is incorrect. Emitted primitives
> can have arbirtrary number of vertices. Simply increment
> index on iteration to fix it.
>
> Signed-off-by: Zack Rusin <zackr at vmware.com>
> ---
> src/gallium/auxiliary/draw/draw_gs.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/auxiliary/draw/draw_gs.c
> b/src/gallium/auxiliary/draw/draw_gs.c
> index 99335af..e605965 100644
> --- a/src/gallium/auxiliary/draw/draw_gs.c
> +++ b/src/gallium/auxiliary/draw/draw_gs.c
> @@ -172,6 +172,7 @@ draw_geometry_fetch_outputs(struct draw_geometry_shader
> *shader,
> {
> struct tgsi_exec_machine *machine = shader->machine;
> unsigned prim_idx, j, slot;
> + unsigned current_idx = 0;
> float (*output)[4];
>
> output = *p_output;
> @@ -184,9 +185,8 @@ draw_geometry_fetch_outputs(struct draw_geometry_shader
> *shader,
> shader->primitive_lengths[prim_idx + shader->emitted_primitives] =
> machine->Primitives[prim_idx];
> shader->emitted_vertices += num_verts_per_prim;
> - for (j = 0; j < num_verts_per_prim; j++) {
> - int idx = (prim_idx * num_verts_per_prim + j) *
> - shader->info.num_outputs;
> + for (j = 0; j < num_verts_per_prim; j++, current_idx++) {
> + int idx = current_idx * shader->info.num_outputs;
> #ifdef DEBUG_OUTPUTS
> debug_printf("%d) Output vert:\n", idx / shader->info.num_outputs);
> #endif
> @@ -208,7 +208,7 @@ draw_geometry_fetch_outputs(struct draw_geometry_shader
> *shader,
> }
> }
> *p_output = output;
> - shader->emitted_primitives += num_primitives;
> + shader->emitted_primitives += num_primitives;
> }
>
> /*#define DEBUG_INPUTS 1*/
> --
> 1.7.10.4
>
Series looks great Zack
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
More information about the mesa-dev
mailing list