diff options
author | Zack Rusin <zack@tungstengraphics.com> | 2008-05-03 22:32:17 -0400 |
---|---|---|
committer | Zack Rusin <zack@tungstengraphics.com> | 2008-05-08 15:26:08 -0400 |
commit | abb08e9335b5d7cb004dc9e6cec390ab6968abe5 (patch) | |
tree | 56a15f6fc8a3e663fc179df61ac789a67b4c4eef /src/gallium/auxiliary/draw/draw_pt_varray.c | |
parent | 90a46ed277cc887d49c8d8c627174c3bd693ecf7 (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.c | 26 |
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; } |