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

Jerome Glisse glisse at freedesktop.org
Fri Jul 16 15:42:12 PDT 2010


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)

Cheers,
Jerome



More information about the mesa-dev mailing list