From 9ec2b1c83f3390dac2e5e7d3aa21ff4920f29243 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 21 May 2008 10:49:26 +1000 Subject: r500: finish main texture instruction decoding --- src/mesa/drivers/dri/r300/r500_fragprog.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'src/mesa/drivers/dri/r300') diff --git a/src/mesa/drivers/dri/r300/r500_fragprog.c b/src/mesa/drivers/dri/r300/r500_fragprog.c index 5869dca933..c83fa3befe 100644 --- a/src/mesa/drivers/dri/r300/r500_fragprog.c +++ b/src/mesa/drivers/dri/r300/r500_fragprog.c @@ -1149,6 +1149,20 @@ static char *to_mask(int val) return str; } +static char *to_texop(int val) +{ + switch(val) { + case 0: return "NOP"; + case 1: return "LD"; + case 2: return "TEXKILL"; + case 3: return "PROJ"; + case 4: return "LODBIAS"; + case 5: return "LOD"; + case 6: return "DXDY"; + } + return NULL; +} + static void dump_program(struct r500_fragment_program *fp) { int pc = 0; @@ -1220,9 +1234,20 @@ static void dump_program(struct r500_fragment_program *fp) case 2: break; case 3: - fprintf(stderr,"1: TEX INST 0x%08x\n", fp->inst[n].inst1); - fprintf(stderr,"2: TEX ADDR 0x%08x\n", fp->inst[n].inst2); - fprintf(stderr,"2: TEX ADDR DXDY 0x%08x\n", fp->inst[n].inst3); + inst = fp->inst[n].inst1; + fprintf(stderr,"\t1:TEX_INST: 0x%08x: id: %d op:%s, %s, %s %s\n", inst, (inst >> 16) & 0xf, + to_texop((inst >> 22) & 0x7), (inst & (1<<25)) ? "ACQ" : "", + (inst & (1<<26)) ? "IGNUNC" : "", (inst & (1<<27)) ? "UNSCALED" : "SCALED"); + inst = fp->inst[n].inst2; + fprintf(stderr,"\t2:TEX_ADDR: 0x%08x: src: %d%s %s/%s/%s/%s dst: %d%s %s/%s/%s/%s\n", inst, + inst & 127, inst & (1<<7) ? "(rel)" : "", + toswiz((inst >> 8) & 0x3), toswiz((inst >> 10) & 0x3), + toswiz((inst >> 12) & 0x3), toswiz((inst >> 14) & 0x3), + (inst >> 16) & 127, inst & (1<<23) ? "(rel)" : "", + toswiz((inst >> 24) & 0x3), toswiz((inst >> 26) & 0x3), + toswiz((inst >> 28) & 0x3), toswiz((inst >> 30) & 0x3)); + + fprintf(stderr,"\t3:TEX_DXDY: 0x%08x\n", fp->inst[n].inst3); break; } fprintf(stderr,"\n"); -- cgit v1.2.3