diff options
author | Zack Rusin <zack@kde.org> | 2010-06-09 11:13:34 -0400 |
---|---|---|
committer | Zack Rusin <zack@kde.org> | 2010-06-09 11:13:34 -0400 |
commit | d4ef0f6c67aefe06d8dd647acf8d9005df39a709 (patch) | |
tree | 00ac70cad31762c1dbc4a99abcfa985e6fe77946 /src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c | |
parent | cec9955acc03d292c67815371415edc3fc3fc4b0 (diff) | |
download | external_mesa3d-d4ef0f6c67aefe06d8dd647acf8d9005df39a709.zip external_mesa3d-d4ef0f6c67aefe06d8dd647acf8d9005df39a709.tar.gz external_mesa3d-d4ef0f6c67aefe06d8dd647acf8d9005df39a709.tar.bz2 |
geometry shaders: make gs work with changable primitives and variable number of vertices
lots and lots of fixes for geometry shaders. in particular now we work when the gs
emits a different primitive than the one the pipeline was started with and also
we work when gs emits more vertices than would fit in the original buffer.
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c index f0fc591..5483a25 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c @@ -67,9 +67,9 @@ struct fetch_shade_emit { - static void fse_prepare( struct draw_pt_middle_end *middle, - unsigned prim, + unsigned in_prim, + unsigned out_prim, unsigned opt, unsigned *max_vertices ) { @@ -79,10 +79,10 @@ static void fse_prepare( struct draw_pt_middle_end *middle, const struct vertex_info *vinfo; unsigned i; unsigned nr_vbs = 0; - - if (!draw->render->set_primitive( draw->render, - prim )) { + + if (!draw->render->set_primitive( draw->render, + out_prim )) { assert(0); return; } @@ -90,7 +90,6 @@ static void fse_prepare( struct draw_pt_middle_end *middle, /* Must do this after set_primitive() above: */ fse->vinfo = vinfo = draw->render->get_vertex_info(draw->render); - fse->key.output_stride = vinfo->size * 4; |