Add TODO list
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 16 Jun 2010 00:42:16 +0000 (17:42 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 16 Jun 2010 00:42:16 +0000 (17:42 -0700)
Don't want to forget anything, no do we?

TODO [new file with mode: 0644]

diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..1db3819
--- /dev/null
+++ b/TODO
@@ -0,0 +1,78 @@
+- Implement AST-to-HIR conversion of discard instructions.
+
+- Handle constant expressions of (matrix {+,-,*,/} scalar)
+
+- Handle constant expressions of (vector {+,-,*,/} scalar)
+
+- Handle constant expressions of (matrix * vector)
+
+- Handle constant expressions of (matrix * matrix)
+
+- Handle currently unsupported constant expression types
+  - ir_unop_sign
+  - ir_unop_exp2
+  - ir_unop_log2
+  - ir_unop_u2f
+  - ir_unop_trunc
+  - ir_unop_ceil
+  - ir_unop_floor
+  - ir_unop_sin
+  - ir_unop_cos
+  - ir_binop_dot
+  - ir_binop_min
+  - ir_binop_max
+  - ir_binop_pow
+
+- Handle constant expressions of (struct == struct)
+
+- Handle constant expressions of (struct != struct)
+
+- Add support to ir_constant for array constants Arrays can only be
+  - declared 'const' in GLSL 1.20+.  This is because there are no
+    array constructors in GLSL 1.10, and any variable declared as
+    'const' must have an initializer.
+
+- Handle constant expressions of (array == array)
+
+- Handle constant expressions of (array != array)
+
+- Treat built-in functions with constant parameters as constant expressions.
+  - Rewrite all built-in functions return a single expression.
+  - Modify the HIR generator for functions to automatically inline built-in
+    functions durning translation.
+  - Care must be taken to handle both the 1.10 rules and the 1.20+ rules.  In
+    1.10, built-in functions cannot be constant expressions.
+
+- Detect non-void functions that lack a return statement
+
+- Detect return statements with a type not matching the funciton's
+  return type.
+
+- Handle over-riding built-in functions
+  - Is the overload per-compilation unit or per-linked shader?
+
+- Handle redeclaration of built-in variables
+  - Handle addition of qualifiers such as 'invariant' or 'centroid'.
+  - Handle resizing of arrays.
+  - Other?  We'll have to look at the spec.
+
+1.30 features:
+
+- Implement AST-to-HIR conversion of bit-shift operators.
+
+- Implement AST-to-HIR conversion of bit-wise {&,|,^,!} operators.
+
+- Implement AST-to-HIR conversion of switch-statements
+  - switch
+  - case
+  - Update break to correcly handle mixed nexting of switch-statements
+    and loops.
+
+- Handle currently unsupported constant expression types
+  - ir_unop_bit_not
+  - ir_binop_mod
+  - ir_binop_lshift
+  - ir_binop_rshift
+  - ir_binop_bit_and
+  - ir_binop_bit_xor
+  - ir_binop_bit_or