On 03/11/2011 12:03 AM, Marek Olšák wrote:
On Thu, Mar 10, 2011 at 11:45 PM, Thomas Hellstrom <thellst...@vmware.com <mailto:thellst...@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


Hi,

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.

Thomas

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to