<div class="gmail_quote">On Thu, Mar 10, 2011 at 11:45 PM, Thomas Hellstrom <span dir="ltr">&lt;<a href="mailto:thellstrom@vmware.com">thellstrom@vmware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Hi,<br>
<br>
I&#39;ve been working a bit on optimizing uploads of non-vbo vertex arrays on the svga device.<br>
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&#39;s pretty pointless to upload the whole array to gpu memory. I basically want to upload only the vertices affected by each draw call.<br>

</blockquote><div><br>This is the same optimization r300g and r600g already have.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


<br>
Here&#39;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.<br>

</blockquote><div><br>The problem is we don&#39;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.<br><br>Marek<br></div></div>