ir_constant_expression: Fix broken code for floating point modulus.

It's supposed to be x - y * floor(x/y), not (x - y) * floor(x/y).
This commit is contained in:
Kenneth Graunke
2010-07-22 17:44:34 -07:00
parent 0a71527dab
commit 3e882ec84a

View File

@@ -533,7 +533,7 @@ ir_expression::constant_expression_value()
/* We don't use fmod because it rounds toward zero; GLSL specifies
* the use of floor.
*/
data.f[c] = (op[0]->value.f[c0] - op[1]->value.f[c1])
data.f[c] = op[0]->value.f[c0] - op[1]->value.f[c1]
* floorf(op[0]->value.f[c0] / op[1]->value.f[c1]);
break;
default: