diff options
author | Jakob Bornecrantz <jakob@tungstengraphics.com> | 2008-05-28 12:42:42 +0200 |
---|---|---|
committer | Jakob Bornecrantz <jakob@tungstengraphics.com> | 2008-05-28 12:42:42 +0200 |
commit | 938d9d596324e411fde5312f2bb65b444c502c37 (patch) | |
tree | f32087f7c61f0827980278a5dae2b32edf534b72 /src/gallium/auxiliary/draw/draw_pt_fetch.c | |
parent | 5d90f97f48f8ba231d52bb1a4758dd37f81ec8d6 (diff) | |
parent | 7b85ea19de09d4e7e077ca147528e90e52683690 (diff) | |
download | external_mesa3d-938d9d596324e411fde5312f2bb65b444c502c37.zip external_mesa3d-938d9d596324e411fde5312f2bb65b444c502c37.tar.gz external_mesa3d-938d9d596324e411fde5312f2bb65b444c502c37.tar.bz2 |
Merge branch 'gallium-vertex-linear' into gallium-0.1
Conflicts:
src/gallium/auxiliary/draw/draw_pt_varray.c
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pt_fetch.c')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_pt_fetch.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch.c b/src/gallium/auxiliary/draw/draw_pt_fetch.c index b96335b..07f4c99 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch.c @@ -166,6 +166,42 @@ void draw_pt_fetch_run( struct pt_fetch *fetch, } +void draw_pt_fetch_run_linear( struct pt_fetch *fetch, + unsigned start, + unsigned count, + char *verts ) +{ + struct draw_context *draw = fetch->draw; + struct translate *translate = fetch->translate; + unsigned i; + + for (i = 0; i < draw->pt.nr_vertex_buffers; i++) { + translate->set_buffer(translate, + i, + ((char *)draw->pt.user.vbuffer[i] + + draw->pt.vertex_buffer[i].buffer_offset), + draw->pt.vertex_buffer[i].pitch ); + } + + translate->run( translate, + start, + count, + verts ); + + /* Edgeflags are hard to fit into a translate program, populate + * them separately if required. In the setup above they are + * defaulted to one, so only need this if there is reason to change + * that default: + */ + if (fetch->need_edgeflags) { + for (i = 0; i < count; i++) { + struct vertex_header *vh = (struct vertex_header *)(verts + i * fetch->vertex_size); + vh->edgeflag = draw_pt_get_edgeflag( draw, start + i ); + } + } +} + + struct pt_fetch *draw_pt_fetch_create( struct draw_context *draw ) { struct pt_fetch *fetch = CALLOC_STRUCT(pt_fetch); |