<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Mar 26, 2018 at 6:39 PM, Erico Nunes <span dir="ltr"><<a href="mailto:nunes.erico@gmail.com" target="_blank">nunes.erico@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks all for the input.<br>
<br>
I don't have an in-depth knowledge of the hardware either, though as<br>
far as we can see the hardware does expect that we pass min_index in<br>
the command stream. max_index is used to calculate the sizes in other<br>
command stream fields (which is not the same as pipe_draw_info.count).<br>
The existing lima-ng implementation does the same:<br>
<a href="https://github.com/limadriver-ng/lima/blob/660a940c8cc151fd886559233c1a22385ee5f254/limare/lib/gp.c#L584
(draw-" rel="noreferrer" target="_blank">https://github.com/limadriver-<wbr>ng/lima/blob/<wbr>660a940c8cc151fd886559233c1a22<wbr>385ee5f254/limare/lib/gp.c#<wbr>L584<br>
(draw-</a>>vertex_start).<br>
<span class=""><br>
On Sat, Mar 17, 2018 at 7:23 PM, Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu">imirkin@alum.mit.edu</a>> wrote:<br>
> For an approximation, you can use the sizes of the bound vbo's to<br>
> guess a min/max index. See<br>
> <a href="https://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/drivers/vc4/vc4_draw.c#n183" rel="noreferrer" target="_blank">https://cgit.freedesktop.org/<wbr>mesa/mesa/tree/src/gallium/<wbr>drivers/vc4/vc4_draw.c#n183</a><br>
> for an example.<br>
<br>
</span>I quickly played with porting something like that to mesa-lima but I<br>
don't think it can solve our problem.<br>
Apparently our bo currently have a fairly large fixed size so I'm not<br>
sure we can do an equivalent calculation using bo size.<br>
And then, min_index is required too.<br>
<span class=""><br>
On Sat, Mar 24, 2018 at 10:32 PM, Marek Olšák <<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>> wrote:<br>
> Here is how to do it:<br>
><br>
> if (max_index != ~0u)<br>
>    // index bounds are valid;<br>
> else<br>
>    // scan the index buffer manually;<br>
><br>
> u_vbuf_get_minmax_index can be used for the scanning.<br>
<br>
</span>mesa-lima currently does not use any vbuf function. And we currently<br>
can't call u_vbuf_get_minmax_index since it's static in u_vbuf.c.<br>
<br>
I suppose we can consider making u_vbuf_get_minmax_index public then.<br>
I tested this and it works for me. It's still a bit annoying since we<br>
need to create fields probably in lima_context (like<br>
vc4_context.max_index does) and use those instead of the ones in<br>
pipe_draw_info. But not a big problem I guess. We could submit this<br>
refactor when mesa-lima gets proposed upstream.<br>
<br>
Just for completeness, one other idea that came up was to define a new<br>
PIPE_CAP_xxx config used to override<br>
st_context.draw_needs_minmax_<wbr>index, and set that in this driver. This<br>
way, pipe_draw_info would come correctly filled and we wouldn't need<br>
to explicitly assemble minmax indices during the driver draw_vbo. How<br>
does this sound compared to the other solution?<br>
</blockquote></div><br></div><div class="gmail_extra">The PIPE_CAP solution sounds OK.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Marek<br></div></div>