Browse Source

gallium: print warning rather than assert(0) for LOG/EXP opcodes

Glean vertProg1 runs all the way through, rather than aborting.
tags/mesa_20090313
Brian Paul 17 years ago
parent
commit
9de9e1fe8c
1 changed files with 32 additions and 2 deletions
  1. 32
    2
      src/gallium/auxiliary/tgsi/exec/tgsi_exec.c

+ 32
- 2
src/gallium/auxiliary/tgsi/exec/tgsi_exec.c View File

@@ -1516,11 +1516,41 @@ exec_instruction(
break;

case TGSI_OPCODE_EXP:
assert (0);
printf("TGSI: EXP opcode not implemented\n");
/* from ARB_v_p:
tmp = ScalarLoad(op0);
result.x = 2^floor(tmp);
result.y = tmp - floor(tmp);
result.z = RoughApprox2ToX(tmp);
result.w = 1.0;
*/
#if 0
/* something like this: */
FETCH( &r[0], 0, CHAN_X );
micro_exp2( &r[0], &r[0] );
FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
STORE( &r[0], 0, chan_index );
}
#endif
break;

case TGSI_OPCODE_LOG:
assert (0);
printf("TGSI: LOG opcode not implemented\n");
/* from ARB_v_p:
tmp = fabs(ScalarLoad(op0));
result.x = floor(log2(tmp));
result.y = tmp / 2^(floor(log2(tmp)));
result.z = RoughApproxLog2(tmp);
result.w = 1.0;
*/
#if 0
/* something like this: */
FETCH( &r[0], 0, CHAN_X );
micro_lg2( &r[0], &r[0] );
FOR_EACH_ENABLED_CHANNEL( *inst, chan_index ) {
STORE( &r[0], 0, chan_index );
}
#endif
break;

case TGSI_OPCODE_MUL:

Loading…
Cancel
Save