[Mesa-dev] [PATCH] Unified st_context::draw_vbo
Chia-I Wu
olvaffe at gmail.com
Sat Jul 17 03:12:17 PDT 2010
On Sat, Jul 17, 2010 at 8:38 AM, Brian Paul <brian.e.paul at gmail.com> wrote:
> On Fri, Jul 16, 2010 at 4:42 PM, Jerome Glisse <glisse at freedesktop.org> wrote:
>> On 07/16/2010 03:18 PM, Chia-I Wu wrote:
>>>
>>> On Sat, Jul 17, 2010 at 2:28 AM, Jakob Bornecrantz<wallbraker at gmail.com>
>>> wrote:
>>>>
>>>> On Fri, Jul 16, 2010 at 11:10 AM, Chia-I Wu<olvaffe at gmail.com> wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> This patch series replaces
>>>>>
>>>>> st_context::draw_arrays
>>>>> st_context::draw_elements,
>>>>> st_context::draw_arrays_instanced
>>>>> st_context::draw_elements_instanced
>>>>> st_context::draw_range_elements
>>>>>
>>>>> by a single
>>>>>
>>>>> st_context::draw_vbo(struct pipe_context *pipe,
>>>>> const struct pipe_draw_info *info);
>>>>>
>>>>> The series is too big in size and I have to push it to
>>>>>
>>>>> http://cgit.freedesktop.org/~olv/mesa/log/?h=gallium-unified-draw
>>>>>
>>>>> Since the drivers no longer need to implement all the drawing
>>>>> variants, the diffstat says
>>>>>
>>>>> 29 files changed, 359 insertions(+), 1061 deletions(-)
>>>>>
>>>>> Its main user (st_draw_vbo) is also simplified.
>>>>>
>>>>> There are 4 commits in the branch. The first commit adds the new
>>>>> function prototype to the header file. The second commit implements
>>>>> draw_vbo for all pipe drivers. The third commit converts all state
>>>>> trackers (st/mesa, st/vega, and util_draw_vertex_buffer) to use
>>>>> draw_vbo. The last commit removes all other variants from the
>>>>> interface.
>>>>>
>>>>> This looks like a nice cleanup to have to me. Suggestion?
>>>>
>>>> Hi Chia-I
>>>>
>>>> First off it should be pipe_context:: instead of st_context:: since
>>>> st_context is the state tracker and not the pipe driver. So when I
>>>> first read your email I thought you where unifying the mesa state
>>>> tracker and not unifying the draw call in the gallium interface.
>>>
>>> Aaahhh, my bad. It should be pipe_context. :(
>>>>
>>>> I'm also not so sure with passing arguments to a function in a struct.
>>>
>>> Hmm. Given the number of arguments needed, a struct seems easier to be
>>> passed
>>> around, and to grow for new fields in the future.
>>>>
>>>> But I like the general idea of unifying all the draw functions into a
>>>> single one or maybe two.
>>
>>>
>>>
>>> Two for DrawElements and DrawArrays respectively? I chose one because,
>>> from a
>>> quick look, the difference between the two calls is whether indexing is
>>> enabled
>>> for most hardware.
>>
>> I prefer one function, from quick look change to r600 are good (but it's
>> pretty trivial for r600 as it was already unified in the driver like
>> for nouveau)
>
> Yeah, this looks pretty good. It makes the interface smaller and
> should make it easier to add other draw variations in the future. You
> should wait for Keith's feedback too though.
>
> If we go ahead with this it might be a good idea to add a
> util_init_draw_info() function to initialize pipe_draw_info objects.
> It would assign reasonable defaults for fields that might not be set
> otherwise and give us a bit of future-proofing.
Sounds good. A reasonable default for instance_count should be 1. Other
fields could stay 0. I will also add util_draw_arrays(mode, start, count) for
simple non-indexed drawing.
> Oh, and you'll have to update the gallium docs.
Right. Will do.
> -Brian
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
--
olv at LunarG.com
More information about the mesa-dev
mailing list