[Mesa-dev] [PATCH] Unified st_context::draw_vbo

Chia-I Wu olvaffe at gmail.com
Fri Jul 16 12:18:11 PDT 2010


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.
> Cheers Jakob.
>

-- 
olv at LunarG.com


More information about the mesa-dev mailing list