[Mesa-dev] [PATCH] draw: don't set start_instance and instance id for pt emit
Jose Fonseca
jfonseca at vmware.com
Wed Dec 16 08:10:30 PST 2015
On 15/12/15 00:58, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> This just adds confusion, these parameters are used when fetching vertices
> by translate, but certainly not when emitting hw vertices for drivers, they
> make no sense there (setting them has no consequences otherwise since there
> won't be any elements with instance_divisor set). So just set them to 0 (the
> draw_pipe_vbuf code for emitting vertices when the draw pipeline is run
> already does exactly that).
> Also while here do some whitespace cleanup.
> ---
> src/gallium/auxiliary/draw/draw_pt_emit.c | 62 +++++++++++++++----------------
> 1 file changed, 31 insertions(+), 31 deletions(-)
>
> diff --git a/src/gallium/auxiliary/draw/draw_pt_emit.c b/src/gallium/auxiliary/draw/draw_pt_emit.c
> index d1eafd8..0165e5a 100644
> --- a/src/gallium/auxiliary/draw/draw_pt_emit.c
> +++ b/src/gallium/auxiliary/draw/draw_pt_emit.c
> @@ -60,7 +60,7 @@ draw_pt_emit_prepare(struct pt_emit *emit,
>
> /* XXX: need to flush to get prim_vbuf.c to release its allocation??
> */
> - draw_do_flush( draw, DRAW_FLUSH_BACKEND );
> + draw_do_flush(draw, DRAW_FLUSH_BACKEND);
>
> /* XXX: may need to defensively reset this later on as clipping can
> * clobber this state in the render backend.
> @@ -80,7 +80,7 @@ draw_pt_emit_prepare(struct pt_emit *emit,
> unsigned emit_sz = 0;
> unsigned src_buffer = 0;
> unsigned output_format;
> - unsigned src_offset = (vinfo->attrib[i].src_index * 4 * sizeof(float) );
> + unsigned src_offset = (vinfo->attrib[i].src_index * 4 * sizeof(float));
>
> output_format = draw_translate_vinfo_format(vinfo->attrib[i].emit);
> emit_sz = draw_translate_vinfo_size(vinfo->attrib[i].emit);
> @@ -89,8 +89,8 @@ draw_pt_emit_prepare(struct pt_emit *emit,
> assert(emit_sz != 0);
>
> if (vinfo->attrib[i].emit == EMIT_1F_PSIZE) {
> - src_buffer = 1;
> - src_offset = 0;
> + src_buffer = 1;
> + src_offset = 0;
> }
>
> hw_key.element[i].type = TRANSLATE_ELEMENT_NORMAL;
> @@ -138,7 +138,7 @@ draw_pt_emit(struct pt_emit *emit,
>
> /* XXX: need to flush to get prim_vbuf.c to release its allocation??
> */
> - draw_do_flush( draw, DRAW_FLUSH_BACKEND );
> + draw_do_flush(draw, DRAW_FLUSH_BACKEND);
>
> if (vertex_count == 0)
> return;
> @@ -152,31 +152,31 @@ draw_pt_emit(struct pt_emit *emit,
> (ushort)translate->key.output_stride,
> (ushort)vertex_count);
>
> - hw_verts = render->map_vertices( render );
> + hw_verts = render->map_vertices(render);
> if (!hw_verts) {
> debug_warn_once("map of vertex buffer failed (out of memory?)");
> return;
> }
>
> translate->set_buffer(translate,
> - 0,
> - vertex_data,
> - stride,
> - ~0);
> + 0,
> + vertex_data,
> + stride,
> + ~0);
>
> translate->set_buffer(translate,
> - 1,
> - &draw->rasterizer->point_size,
> - 0,
> - ~0);
> + 1,
> + &draw->rasterizer->point_size,
> + 0,
> + ~0);
>
> /* fetch/translate vertex attribs to fill hw_verts[] */
> translate->run(translate,
> - 0,
> - vertex_count,
> - draw->start_instance,
> - draw->instance_id,
> - hw_verts );
> + 0,
> + vertex_count,
> + 0,
> + 0,
> + hw_verts);
>
> render->unmap_vertices(render, 0, vertex_count - 1);
>
> @@ -212,7 +212,7 @@ draw_pt_emit_linear(struct pt_emit *emit,
> #endif
> /* XXX: need to flush to get prim_vbuf.c to release its allocation??
> */
> - draw_do_flush( draw, DRAW_FLUSH_BACKEND );
> + draw_do_flush(draw, DRAW_FLUSH_BACKEND);
>
> /* XXX: and work out some way to coordinate the render primitive
> * between vbuf.c and here...
> @@ -224,35 +224,35 @@ draw_pt_emit_linear(struct pt_emit *emit,
> (ushort)count))
> goto fail;
>
> - hw_verts = render->map_vertices( render );
> + hw_verts = render->map_vertices(render);
> if (!hw_verts)
> goto fail;
>
> translate->set_buffer(translate, 0,
> - vertex_data, stride, count - 1);
> + vertex_data, stride, count - 1);
>
> translate->set_buffer(translate, 1,
> - &draw->rasterizer->point_size,
> - 0, ~0);
> + &draw->rasterizer->point_size,
> + 0, ~0);
>
> translate->run(translate,
> 0,
> count,
> - draw->start_instance,
> - draw->instance_id,
> + 0,
> + 0,
> hw_verts);
>
> if (0) {
> unsigned i;
> for (i = 0; i < count; i++) {
> debug_printf("\n\n%s vertex %d:\n", __FUNCTION__, i);
> - draw_dump_emitted_vertex( emit->vinfo,
> - (const uint8_t *)hw_verts +
> - translate->key.output_stride * i );
> + draw_dump_emitted_vertex(emit->vinfo,
> + (const uint8_t *)hw_verts +
> + translate->key.output_stride * i);
> }
> }
>
> - render->unmap_vertices( render, 0, count - 1 );
> + render->unmap_vertices(render, 0, count - 1);
>
> for (start = i = 0;
> i < prim_info->primitive_count;
> @@ -262,7 +262,7 @@ draw_pt_emit_linear(struct pt_emit *emit,
> start,
> prim_info->primitive_lengths[i]);
> }
> -
> +
> render->release_vertices(render);
>
> return;
>
Makes sense.
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
More information about the mesa-dev
mailing list