extended swizzle (bug 6727)
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 24 Apr 2006 16:33:25 +0000 (16:33 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 24 Apr 2006 16:33:25 +0000 (16:33 +0000)
src/mesa/drivers/dri/r300/r300_vertexprog.c

index f794c9aa67ab94b7022047175fe4a470af612ee2..9e32cfcfef9049d0dd5fa4a4946e06c0143f200f 100644 (file)
@@ -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: