diff options
author | Keith Whitwell <keithw@vmware.com> | 2010-06-23 18:06:52 +0100 |
---|---|---|
committer | Keith Whitwell <keithw@vmware.com> | 2010-06-23 18:10:20 +0100 |
commit | 64682da8ab7aff7b4ce651db99a32ed1fd8b178c (patch) | |
tree | a216f21f6caa1628c7b25defd5a19a777226725c /src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c | |
parent | 292eecca8c4284cbb343d954b76586fcaa26de2a (diff) | |
download | external_mesa3d-64682da8ab7aff7b4ce651db99a32ed1fd8b178c.zip external_mesa3d-64682da8ab7aff7b4ce651db99a32ed1fd8b178c.tar.gz external_mesa3d-64682da8ab7aff7b4ce651db99a32ed1fd8b178c.tar.bz2 |
draw: don't try to precalculate the pipeline output primitive
We were previously calculating a value which was either the geometry
shader output primitive or the application's input primitive, and
passing that to the various front/middle/back components for use as
the ultimate rendering primtive.
Unfortunately, this was not correct -- if the vcache decomposition
path is active and geometry shaders are *not* active, we can end up
with a third primitive -- specifically the decomposed version of the
input primitive.
Rather than trying to precalculate this, just let the individual
components inform their successors about which primitive type they are
recieving.
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 | 8 |
1 files changed, 5 insertions, 3 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 5483a25..b827028 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c @@ -68,8 +68,7 @@ struct fetch_shade_emit { static void fse_prepare( struct draw_pt_middle_end *middle, - unsigned in_prim, - unsigned out_prim, + unsigned prim, unsigned opt, unsigned *max_vertices ) { @@ -80,9 +79,12 @@ static void fse_prepare( struct draw_pt_middle_end *middle, unsigned i; unsigned nr_vbs = 0; + /* Can't support geometry shader on this path. + */ + assert(!draw->gs.geometry_shader); if (!draw->render->set_primitive( draw->render, - out_prim )) { + prim )) { assert(0); return; } |