Eric Anholt
c8babd5d9b
glsl2: Fix typo in clamp() constant builtin using uint instead of int.
...
I take back the bad things I've said about the signed/unsigned
comparison warning now.
2010-08-02 17:50:20 -07:00
Eric Anholt
5704ed27dd
glsl2: Don't consider uniform initializers as constant expressions.
...
We were happily optimizing away the body of
glsl-uniform-initializer-* to never use the uniforms.
2010-08-02 17:47:35 -07:00
Kenneth Graunke
7ddee6a535
ir_constant_expression: Add support for the "outerProduct" builtin.
2010-07-28 15:46:29 -07:00
Kenneth Graunke
5d255e24b2
ir_constant_expression: Add support for the "mix" builtin.
...
Both 1.10 and 1.30 variants.
2010-07-28 15:46:29 -07:00
Kenneth Graunke
b09ae5dd3f
ir_constant_expression: Add support for the "transpose" builtin.
2010-07-28 15:46:29 -07:00
Kenneth Graunke
546f3a2754
ir_constant_expression: Add support for the "smoothstep" builtin.
2010-07-28 15:46:29 -07:00
Kenneth Graunke
a4ca1cfb66
ir_constant_expression: Add support for the "clamp" builtin.
2010-07-28 15:46:29 -07:00
Kenneth Graunke
ff58b7c9b6
ir_constant_expression: Add support for the "step" builtin.
2010-07-28 15:46:29 -07:00
Kenneth Graunke
3d5c2f0adb
ir_constant_expression: Add support for the "faceforward" builtin.
2010-07-28 15:46:29 -07:00
Kenneth Graunke
04b3643dbf
ir_constant_expression: Add support for the "refract" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
d60b2b03da
ir_constant_expression: Add support for the "reflect" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
53f306d573
ir_constant_expression: Add support for the "normalize" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
8fe5f30645
ir_constant_expression: Add support for the "matrixCompMult" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
a7650af706
ir_constant_expression: Simplify code that implements the "dot" builtin.
...
There's no need to use an ir_expression; we have a handy C function.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
5489ad086f
ir_constant_expression: Add support for the "length" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
ffcec13599
ir_constant_expression: Extract dot product calculation for reuse.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
4b1d77ea96
ir_constant_expression: Remove support for dot products of integers.
...
This shouldn't be required since dot is only defined for floating point
types, even in GLSL 4.0.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
557827340a
ir_constant_expression: Add support for the "greaterThanEqual" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
7f042b9812
ir_constant_expression: Add support for the "greaterThan" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
319f4949e0
ir_constant_expression: Add support for the "lessThanEqual" builtin.
2010-07-28 15:46:28 -07:00
Kenneth Graunke
6d897f07cf
ir_constant_expression: Add support for the "lessThan" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
48a69ba057
ir_constant_expression: Add support for the "notEqual" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
0b6ef6ef6e
ir_constant_expression: Add support for the "equal" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
2eaf31642c
ir_constant_expression: Add support for the "distance" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
7bcaa3828f
ir_constant_expression: Add support for the "degrees" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
0afe349322
ir_constant_expression: Add support for the "radians" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
20970f7dea
ir_constant_expression: Add support for the "tanh" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
9c9f8b2d69
ir_constant_expression: Add support for the "tan" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
5d551daf38
ir_constant_expression: Add support for the "sinh" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
ba4178345a
ir_constant_expression: Add support for the "cosh" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
13f8758e9c
ir_constant_expression: Add support for "atan" builtins.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
f6ea9dfe47
ir_constant_expression: Add support for "acos" builtin.
2010-07-28 15:46:27 -07:00
Kenneth Graunke
3b6c29b8f0
ir_constant_expression: Add support for "asin" builtin.
2010-07-28 15:46:26 -07:00
Kenneth Graunke
d6792a7f7c
ir_constant_expression: Add support for "any" builtin.
2010-07-28 15:46:26 -07:00
Kenneth Graunke
aca7e95222
ir_constant_expression: Add support for "all" builtin.
2010-07-28 15:46:26 -07:00
Kenneth Graunke
8b1680acc3
ir_constant_expression: Implement builtins that wrap an expression.
...
These builtin functions are represented by ir_expression_operations, so
we can just create one of those and ask for its value.
2010-07-28 15:46:26 -07:00
Kenneth Graunke
38cb1b273f
ir_constant_expression: Add support for builtins dFdx, dFdy, and fwidth.
...
These always return zero (the derivative of a constant).
2010-07-28 15:46:26 -07:00
Kenneth Graunke
bafd89fa0f
ir_constant_expression: Stub out support for constant builtins.
2010-07-28 15:46:26 -07:00
Kenneth Graunke
f914915d8e
ir_constant_expression: Use Mesa's MIN2/MAX2 instead of our own.
2010-07-28 15:46:26 -07:00
Eric Anholt
54f583a206
glsl2: Don't dereference a NULL var in CE handling during a compile error.
...
If an undeclared variable was dereferenced in an expression that
needed constant expression handling, we would walk off a null ir->var
pointer.
Fixes:
glsl1-TIntermediate::addUnaryMath
2010-07-27 12:10:50 -07:00
Kenneth Graunke
3e882ec84a
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).
2010-07-22 17:45:45 -07:00
Kenneth Graunke
9a6d40fbfb
ir_constant_expression: Add support for array == and !=.
...
Piglit parser tests const-array-03.frag and const-array-04.frag now
generate the correct code.
2010-07-21 16:38:33 -07:00
Kenneth Graunke
a096fa7476
ir_constant_expression: Add support for constant arrays.
...
Fixes piglit test const-array-02.frag.
2010-07-21 16:38:33 -07:00
Kenneth Graunke
46d6b8d1ba
ir_constant_expression: Add support for ir_unop_u2f.
...
Also make ir_unop_i2f only operate on signed integers.
2010-07-21 16:38:32 -07:00
Kenneth Graunke
3163f87463
ir_constant_expression: Remove open coded equality comparisons.
...
The ir_constant::has_value method already does this.
2010-07-21 16:38:32 -07:00
Kenneth Graunke
e4768eecd5
ir_constant_expression: Remove pointless use of variable_referenced.
...
ir_dereference_variable always references an ir_variable, so there's no
point in calling a function and NULL-checking the result.
2010-07-20 17:10:05 -07:00
Kenneth Graunke
98f32a13be
ir_constant_expression: Use "this" pointer directly.
...
In ir_expression's signature, I replaced ir->operands[i] with op[i] as
it is more concise; an assertion already ensures these are equal.
2010-07-20 17:10:05 -07:00
Kenneth Graunke
fb2ffd2846
ir_constant_expression: Convert from a visitor to a virtual function.
...
The constant_expression_wrapper was already the only external API, and
much of the internal code used it anyway. Also, it wouldn't ever visit
non-rvalue ir_instructions, so using a visitor seemed a bit unnecessary.
This uses "ir_foo *ir = this;" lines to avoid code churn. These should
be removed.
2010-07-20 17:10:05 -07:00
Kenneth Graunke
e340854115
glsl2: Move constant_expression_value method to ir_rvalue.
...
This prevents top-level callers from asking for the value of something
that is guaranteed not to have one.
2010-07-20 17:10:05 -07:00
Eric Anholt
9be7f63813
glsl2: Make cross() be an expression operation.
...
ARB_fp, ARB_vp, Mesa IR, and the 965 vertex shader all have
instructions for cross. Shaves 12 Mesa instructions off of a
66-instruction shader I have.
2010-07-18 18:12:12 -07:00