From 11fceb19d3aa6adf9fe103ad733b37a69229caec Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Sun, 18 Jun 2006 14:07:10 +0000 Subject: [PATCH] no need to handle ARL in a special way, it's a generic scalar operation. only tested on r300. --- src/mesa/drivers/dri/r200/r200_vertprog.c | 14 ++++---------- src/mesa/drivers/dri/r300/r300_vertexprog.c | 9 +-------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/mesa/drivers/dri/r200/r200_vertprog.c b/src/mesa/drivers/dri/r200/r200_vertprog.c index 615953b6100..9e651aa7d10 100644 --- a/src/mesa/drivers/dri/r200/r200_vertprog.c +++ b/src/mesa/drivers/dri/r200/r200_vertprog.c @@ -311,6 +311,10 @@ static unsigned long t_opcode(enum prog_opcode opcode) switch(opcode){ case OPCODE_ADD: return R200_VPI_OUT_OP_ADD; + /* FIXME: ARL works fine, but negative offsets won't work - fglrx just + * seems to ignore neg offsets which isn't quite correct... + */ + case OPCODE_ARL: return R200_VPI_OUT_OP_ARL; case OPCODE_DP4: return R200_VPI_OUT_OP_DOT; case OPCODE_DST: return R200_VPI_OUT_OP_DST; case OPCODE_EX2: return R200_VPI_OUT_OP_EX2; @@ -652,16 +656,6 @@ static GLboolean r200_translate_vertex_program(struct r200_vertex_program *vp) /* These ops need special handling. */ switch(vpi->Opcode){ - /* FIXME: ARL works fine, but negative offsets won't work - fglrx just sems to ignore neg offsets - which isn't quite correct... */ - case OPCODE_ARL: - o_inst->op = MAKE_VSF_OP(R200_VPI_OUT_OP_ARL, t_dst(&vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask)); - o_inst->src0 = t_src_scalar(vp, &src[0]); - o_inst->src1 = UNUSED_SRC_0; - o_inst->src2 = UNUSED_SRC_1; - goto next; - case OPCODE_POW: /* pow takes only one argument, first scalar is in slot x, 2nd in slot z (other slots don't matter). So may need to insert additional instruction */ diff --git a/src/mesa/drivers/dri/r300/r300_vertexprog.c b/src/mesa/drivers/dri/r300/r300_vertexprog.c index 602a3ba32a7..ee9c327cb76 100644 --- a/src/mesa/drivers/dri/r300/r300_vertexprog.c +++ b/src/mesa/drivers/dri/r300/r300_vertexprog.c @@ -300,6 +300,7 @@ static unsigned long t_opcode(enum prog_opcode opcode) { switch(opcode){ + case OPCODE_ARL: return R300_VPI_OUT_OP_ARL; case OPCODE_DST: return R300_VPI_OUT_OP_DST; case OPCODE_EX2: return R300_VPI_OUT_OP_EX2; case OPCODE_EXP: return R300_VPI_OUT_OP_EXP; @@ -618,14 +619,6 @@ void r300_translate_vertex_shader(struct r300_vertex_program *vp) /* These ops need special handling. */ switch(vpi->Opcode){ - case OPCODE_ARL: - o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_ARL, t_dst_index(vp, &vpi->DstReg), - t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); - o_inst->src1=t_src_scalar(vp, &src[0]); - o_inst->src2=ZERO_SRC_0; - o_inst->src3=ZERO_SRC_0; - goto next; - case OPCODE_POW: o_inst->op=MAKE_VSF_OP(R300_VPI_OUT_OP_POW, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); -- 2.30.2