|
|
@@ -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 |