[Mesa-dev] Restrictions on redefine_user_buffer()

Thomas Hellstrom thellstrom at vmware.com
Thu Mar 10 23:11:01 PST 2011

On 03/11/2011 12:03 AM, Marek Olšák wrote:
> On Thu, Mar 10, 2011 at 11:45 PM, Thomas Hellstrom 
> <thellstrom at vmware.com <mailto:thellstrom at vmware.com>> wrote:
>     Hi,
>     I've been working a bit on optimizing uploads of non-vbo vertex
>     arrays on the svga device.
>     Since we have no knowledge of the vertex array size before a draw
>     call and the vertex array may change values in between subsequent
>     draw calls it's pretty pointless to upload the whole array to gpu
>     memory. I basically want to upload only the vertices affected by
>     each draw call.
> This is the same optimization r300g and r600g already have.
>     Here's where redefine_user_buffer() comes in, but to be able to
>     use it for this optimization we must require that a subsequent
>     draw call referencing the user buffer must not access any data
>     outside [offset, offset+size-1]. A stronger restriction than the
>     comment in the p_context.h header file.
> The problem is we don't have any other info about user buffers in 
> st/mesa than the minimum and maximum index. We pass that info to both 
> redefine_user_buffer and draw_vbo. Whether you use 
> redefine_user_buffer or pipe_draw_info is up to you. The Radeon 
> drivers chose the latter.
> Marek


The problem I see is that we can't really use redefine_user_buffers() 
for this unless we put a restriction on subsequent draw calls to not use 
data outside the bounds given by redefine_user_buffers. I'm thinking in 
terms of possible other users of that interface than the mesa state tracker.

I'll take a look into pipe_draw_info, though.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20110311/8e77bd91/attachment.htm>

More information about the mesa-dev mailing list