<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 03/11/2011 12:03 AM, Marek Olšák wrote:
<blockquote
cite="mid:AANLkTikhDghkn-Eym+F0Mwqq=Cs6WRmdgL=jiYkmQxJQ@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1252">
<div class="gmail_quote">On Thu, Mar 10, 2011 at 11:45 PM, Thomas
Hellstrom <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:thellstrom@vmware.com">thellstrom@vmware.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi,<br>
<br>
I'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'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="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
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.<br>
</blockquote>
<div><br>
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.<br>
<br>
Marek<br>
</div>
</div>
</blockquote>
<br>
<br>
Hi,<br>
<br>
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.<br>
<br>
I'll take a look into pipe_draw_info, though.<br>
<br>
Thomas<br>
<br>
</body>
</html>