123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- - 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.
-
- - Improve handling of constants and their initializers. Constant initializers
- should never generate any code. This is trival for scalar constants. It is
- also trivial for arrays, matrices, and vectors that are accessed with
- constant index values. For others it is more complicated. Perhaps these
- cases should be silently converted to uniforms?
-
- 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
|