summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_pt_varray.c
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-05-01 12:38:51 -0400
committerZack Rusin <zack@tungstengraphics.com>2008-05-08 15:26:00 -0400
commit2abc1b3641e435e0b68490fa6b0a7ffa7c030c76 (patch)
tree1cf636a1582b2b98c397f1a9733b9f9b5879c67e /src/gallium/auxiliary/draw/draw_pt_varray.c
parent1dfb3d4729ce4cd71a593c14dbb2907cd987f8ab (diff)
abstract fetching elts
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pt_varray.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_varray.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_varray.c b/src/gallium/auxiliary/draw/draw_pt_varray.c
index 355093f945..b0bd2b983e 100644
--- a/src/gallium/auxiliary/draw/draw_pt_varray.c
+++ b/src/gallium/auxiliary/draw/draw_pt_varray.c
@@ -43,6 +43,8 @@ struct varray_frontend {
unsigned draw_count;
unsigned fetch_count;
+ unsigned fetch_start;
+
struct draw_pt_middle_end *middle;
unsigned input_prim;
@@ -68,15 +70,18 @@ static void varray_flush(struct varray_frontend *varray)
varray->draw_count = 0;
}
-#if 0
-static void varray_check_flush(struct varray_frontend *varray)
+static INLINE void fetch_init(struct varray_frontend *varray,
+ unsigned current_count,
+ unsigned count)
{
- if (varray->draw_count + 6 >= DRAW_MAX/* ||
- varray->fetch_count + 4 >= FETCH_MAX*/) {
- varray_flush(varray);
+ unsigned idx;
+ const unsigned end = MIN2(FETCH_MAX, count - current_count);
+ for (idx = 0; idx < end; ++idx) {
+ varray->fetch_elts[idx] = varray->fetch_start + idx;
}
+ varray->fetch_start += idx;
+ varray->fetch_count = idx;
}
-#endif
static INLINE void add_draw_el(struct varray_frontend *varray,
int idx, ushort flags)