mirror of https://gitlab.freedesktop.org/mesa/mesa
85 lines
2.6 KiB
Plaintext
85 lines
2.6 KiB
Plaintext
- 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
|