| Age | Commit message (Collapse) | Author | 
 | 
 | 
 | 
 | 
 | 
Since GLSL permits arrays of structures, we need to store each element
as an ir_constant*, not just ir_constant_data.
Fixes parser tests const-array-01.frag, const-array-03.frag,
const-array-04.frag, const-array-05.frag, though 03 and 04 generate the
wrong code.
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
This is quite a large patch because breaking it into smaller pieces
would result in the tree being intermitently broken.  The big changes
are:
    * Add the ir_var_temporary variable mode
    * Change the ir_variable constructor to take the mode as a
      parameter and correctly specify the mode for all ir_varables.
    * Change the linker to not cross validate ir_var_temporary
      variables.
    * Change the linker to pull all ir_var_temporary variables from
      global scope into 'main'.
 | 
 | 
If they have a return value, this means putting it into a temporary
and making a deref of the temp be the rvalue, since we don't know if
the rvalue will be used or not.
 | 
 | 
 | 
 | 
 | 
 | 
Previously, code like ivec4(mat2(...)) would fail because the compiler
would naively try to convert a mat2 to an imat2...which doesn't exist.
Now, a separate pass breaks such matrices down to their columns, which
can be converted from vec2 to ivec2.
Fixes piglit tests constructor-11.vert, constructor-14.vert,
constructor-15.vert, and CorrectConstFolding2.frag.
 | 
 | 
This has no functional changes.
 | 
 | 
This case is already caught by a later check that ensures sufficient
components were provided, based on the type.
 | 
 | 
_mesa_glsl_parse_state should be the parent for all temporary allocation
done while compiling a shader.  glsl_shader should only be used as the
parent for the shader's final IR---the _result_ of compilation.
Since many IR instructions may be added or discarded during optimization
passes, IR should not ever be allocated to glsl_shader directly.
Done via sed -i s/talloc_parent(state)/state/g and s/talloc_parent(st)/st/g.
This also removes a ton of talloc_parent calls, which may help performance.
 | 
 | 
 | 
 | 
Now that all scalar, vector, and matrix constructors are emitted
in-line, the parameters to these constructors should not be flattened
to a pile of scalars.  Instead, the functions that emit the in-line
constructor bodies can directly write the parameters to the correct
locations in the objects being constructed.
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 |