summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2006-04-24 16:33:25 +0000
committerBrian Paul <[email protected]>2006-04-24 16:33:25 +0000
commitf12ea2d402e8f6d29dfd40c731351ff210887b58 (patch)
treec613ed5675a6ba7c4f625b4e54f9e419208ce21b /src
parent9cd1cc0535bd0b80c0c2550a03aeb872b10d7ff0 (diff)
extended swizzle (bug 6727)
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/r300/r300_vertexprog.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_vertexprog.c b/src/mesa/drivers/dri/r300/r300_vertexprog.c
index f794c9aa67a..9e32cfcfef9 100644
--- a/src/mesa/drivers/dri/r300/r300_vertexprog.c
+++ b/src/mesa/drivers/dri/r300/r300_vertexprog.c
@@ -916,6 +916,16 @@ void r300_translate_vertex_shader(struct r300_vertex_program *vp)
fprintf(stderr, "Dont know how to handle op %d yet\n", vpi->Opcode);
exit(-1);
break;
+ case OPCODE_SWZ:
+ hw_op=(src[0].File == PROGRAM_TEMPORARY) ? R300_VPI_OUT_OP_MAD_2 : R300_VPI_OUT_OP_MAD;
+
+ o_inst->op=MAKE_VSF_OP(hw_op, t_dst_index(vp, &vpi->DstReg),
+ t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File));
+ o_inst->src1=t_src(vp, &src[0]);
+ o_inst->src2=ONE_SRC_0;
+ o_inst->src3=ZERO_SRC_0;
+
+ goto next;
case OPCODE_END:
break;
default: