Eric Anholt
8273bd4687
glsl2: Make the clone() method take a talloc context.
...
In most cases, we needed to be reparenting the cloned IR to a
different context (for example, to the linked shader instead of the
unlinked shader), or optimization before the reparent would cause
memory usage of the original object to grow and grow.
2010-08-04 12:42:47 -07:00
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