summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_pt_varray.c
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-05-03 22:32:17 -0400
committerZack Rusin <zack@tungstengraphics.com>2008-05-08 15:26:08 -0400
commitabb08e9335b5d7cb004dc9e6cec390ab6968abe5 (patch)
tree56a15f6fc8a3e663fc179df61ac789a67b4c4eef /src/gallium/auxiliary/draw/draw_pt_varray.c
parent90a46ed277cc887d49c8d8c627174c3bd693ecf7 (diff)
implement linear emition and fetching and plug it in the varray paths
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pt_varray.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_varray.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_varray.c b/src/gallium/auxiliary/draw/draw_pt_varray.c
index c9843bded0..916373acc8 100644
--- a/src/gallium/auxiliary/draw/draw_pt_varray.c
+++ b/src/gallium/auxiliary/draw/draw_pt_varray.c
@@ -75,6 +75,28 @@ static void varray_flush(struct varray_frontend *varray)
varray->draw_count = 0;
}
+static void varray_flush_linear(struct varray_frontend *varray)
+{
+ if (varray->draw_count) {
+ debug_printf("FLUSH LINEAR fc = %d, dc = %d\n",
+ varray->fetch_count,
+ varray->draw_count);
+ debug_printf("\telt0 = %d, eltx = %d, draw0 = %d, drawx = %d\n",
+ varray->fetch_elts[0],
+ varray->fetch_elts[varray->fetch_count-1],
+ varray->draw_elts[0],
+ varray->draw_elts[varray->draw_count-1]);
+ varray->middle->run_linear(varray->middle,
+ varray->fetch_elts[0],
+ varray->fetch_count,
+ varray->draw_elts,
+ varray->draw_count);
+ }
+
+ varray->fetch_count = 0;
+ varray->draw_count = 0;
+}
+
static INLINE void fetch_init(struct varray_frontend *varray,
unsigned count)
{
@@ -265,8 +287,8 @@ static void varray_prepare(struct draw_pt_front_end *frontend,
if (opt & PT_PIPELINE)
{
varray->base.run = varray_run_extras;
- }
- else
+ }
+ else
{
varray->base.run = varray_run;
}