Merge branch 'glsl2-head' into glsl2
[profile/ivi/mesa.git] / src / glsl / TODO
1 - Implement AST-to-HIR conversion of discard instructions.
2
3 - Handle constant expressions of (matrix {+,-,*,/} scalar)
4
5 - Handle constant expressions of (vector {+,-,*,/} scalar)
6
7 - Handle constant expressions of (matrix * vector)
8
9 - Handle constant expressions of (matrix * matrix)
10
11 - Handle currently unsupported constant expression types
12   - ir_unop_sign
13   - ir_unop_exp2
14   - ir_unop_log2
15   - ir_unop_u2f
16   - ir_unop_trunc
17   - ir_unop_ceil
18   - ir_unop_floor
19   - ir_unop_sin
20   - ir_unop_cos
21   - ir_binop_dot
22   - ir_binop_min
23   - ir_binop_max
24   - ir_binop_pow
25
26 - Handle constant expressions of (struct == struct)
27
28 - Handle constant expressions of (struct != struct)
29
30 - Add support to ir_constant for array constants Arrays can only be
31   - declared 'const' in GLSL 1.20+.  This is because there are no
32     array constructors in GLSL 1.10, and any variable declared as
33     'const' must have an initializer.
34
35 - Handle constant expressions of (array == array)
36
37 - Handle constant expressions of (array != array)
38
39 - Treat built-in functions with constant parameters as constant expressions.
40   - Rewrite all built-in functions return a single expression.
41   - Modify the HIR generator for functions to automatically inline built-in
42     functions durning translation.
43   - Care must be taken to handle both the 1.10 rules and the 1.20+ rules.  In
44     1.10, built-in functions cannot be constant expressions.
45
46 - Detect non-void functions that lack a return statement
47
48 - Detect return statements with a type not matching the funciton's
49   return type.
50
51 - Handle over-riding built-in functions
52   - Is the overload per-compilation unit or per-linked shader?
53
54 - Handle redeclaration of built-in variables
55   - Handle addition of qualifiers such as 'invariant' or 'centroid'.
56   - Handle resizing of arrays.
57   - Other?  We'll have to look at the spec.
58
59 - Improve handling of constants and their initializers.  Constant initializers
60   should never generate any code.  This is trival for scalar constants.  It is
61   also trivial for arrays, matrices, and vectors that are accessed with
62   constant index values.  For others it is more complicated.  Perhaps these
63   cases should be silently converted to uniforms?
64
65 1.30 features:
66
67 - Implement AST-to-HIR conversion of bit-shift operators.
68
69 - Implement AST-to-HIR conversion of bit-wise {&,|,^,!} operators.
70
71 - Implement AST-to-HIR conversion of switch-statements
72   - switch
73   - case
74   - Update break to correcly handle mixed nexting of switch-statements
75     and loops.
76
77 - Handle currently unsupported constant expression types
78   - ir_unop_bit_not
79   - ir_binop_mod
80   - ir_binop_lshift
81   - ir_binop_rshift
82   - ir_binop_bit_and
83   - ir_binop_bit_xor
84   - ir_binop_bit_or