From e689a7fc6a743e15b1534732c8973119a39dd928 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Wed, 31 May 2006 17:57:14 +0000 Subject: SWZ is nearly identical to MOV. the difference is that SWZ supports per-component negation, which MOV doesn't. as that's handled transparently, we can use the same code for them. --- src/mesa/drivers/dri/r300/r300_vertexprog.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'src/mesa/drivers/dri') diff --git a/src/mesa/drivers/dri/r300/r300_vertexprog.c b/src/mesa/drivers/dri/r300/r300_vertexprog.c index a2af12e6be..c688e584d7 100644 --- a/src/mesa/drivers/dri/r300/r300_vertexprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertexprog.c @@ -630,6 +630,7 @@ void r300_translate_vertex_shader(struct r300_vertex_program *vp) goto next; case OPCODE_MOV://ADD RESULT 1.X Y Z W PARAM 0{} {X Y Z W} PARAM 0{} {ZERO ZERO ZERO ZERO} + case OPCODE_SWZ: #if 1 o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ADD, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); @@ -910,16 +911,6 @@ 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: -- cgit v1.2.3