diff options
author | Roland Scheidegger <sroland@vmware.com> | 2009-12-18 15:54:28 +0100 |
---|---|---|
committer | Roland Scheidegger <sroland@vmware.com> | 2009-12-18 15:54:28 +0100 |
commit | 890809d71b6ab40c56d341a5dad9f5e6b06469d0 (patch) | |
tree | 8e6095478eadd9fc4b7fbe77437a0d673ab58b77 /src/mesa/state_tracker/st_mesa_to_tgsi.c | |
parent | 50caff5675888c0063c73fa64b88129db7aa11dd (diff) |
gallium: fix mesa to tgsi translation for edgeflags
test apps (progs/trivial/tri-edgeflags and similar) seem to work now
Diffstat (limited to 'src/mesa/state_tracker/st_mesa_to_tgsi.c')
-rw-r--r-- | src/mesa/state_tracker/st_mesa_to_tgsi.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c index 72bd17bf41..7b334e21d2 100644 --- a/src/mesa/state_tracker/st_mesa_to_tgsi.c +++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c @@ -718,6 +718,16 @@ emit_face_var( struct st_translate *t, t->inputs[t->inputMapping[FRAG_ATTRIB_FACE]] = ureg_src(face_temp); } +static void +emit_edgeflags( struct st_translate *t, + const struct gl_program *program ) +{ + struct ureg_program *ureg = t->ureg; + struct ureg_dst edge_dst = t->outputs[t->outputMapping[VERT_RESULT_EDGE]]; + struct ureg_src edge_src = t->inputs[t->inputMapping[VERT_ATTRIB_EDGEFLAG]]; + + ureg_MOV( ureg, edge_dst, edge_src ); +} /** * Translate Mesa program to TGSI format. @@ -752,7 +762,8 @@ st_translate_mesa_program( GLuint numOutputs, const GLuint outputMapping[], const ubyte outputSemanticName[], - const ubyte outputSemanticIndex[] ) + const ubyte outputSemanticIndex[], + boolean passthrough_edgeflags ) { struct st_translate translate, *t; unsigned i; @@ -823,6 +834,8 @@ st_translate_mesa_program( outputSemanticName[i], outputSemanticIndex[i] ); } + if (passthrough_edgeflags) + emit_edgeflags( t, program ); } /* Declare address register. |