summaryrefslogtreecommitdiff
path: root/src/glsl/ast_function.cpp
AgeCommit message (Collapse)Author
2010-08-05glsl2: Log a better error message when a matching function cannot be foundIan Romanick
2010-08-04glsl2: Generate masked assignments in vector and matrix constructorsIan Romanick
Previously the in-line matrix and vector constructors would generate swizzles in the LHS. The code is actually more clear if it just generates the masked assignments instead of relying on the ir_assignment constructor to convert the swizzles to write masks.
2010-08-04glsl2: Remove uses of deprecated TALLOC_CTX type.Kenneth Graunke
2010-08-03glsl2: No need to strdup the name passed in to ir_variable constructor.Eric Anholt
ir_variable always strdups the incoming name so that it matches the lifetime of the ir_variable.
2010-07-29glsl2: Fix spelling of "sentinel."Eric Anholt
2010-07-28ast_function: Set constant_value on return value temporaries in 1.20+.Kenneth Graunke
2010-07-21glsl2: Extend ir_constant to store constant arrays, and generate them.Kenneth Graunke
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.
2010-07-21glsl2: Emit array constructors inline.Kenneth Graunke
2010-07-21glsl2: Add some comments.Kenneth Graunke
2010-07-21glsl2: Replace insert_before/remove pairs with exec_node::replace_with.Kenneth Graunke
2010-07-20glsl2: glsl_type has its own talloc context, don't pass one inIan Romanick
2010-07-20glsl2: Add and use new variable mode ir_var_temporaryIan Romanick
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'.
2010-07-20glsl2: Always insert function calls into the instruction stream.Eric Anholt
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.
2010-07-18glsl2: Remove the const disease from function signature's callee.Eric Anholt
2010-07-14ast_function: Actually do type conversion on function arguments.Kenneth Graunke
2010-07-09ast_function: Fix non-float constructors with matrix arguments.Kenneth Graunke
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.
2010-07-09ast_function: Move error return earlier and don't indent the world.Kenneth Graunke
This has no functional changes.
2010-07-09ast_function: Remove unnecessary check for empty constructors.Kenneth Graunke
This case is already caught by a later check that ensures sufficient components were provided, based on the type.
2010-06-30glsl2: Use _mesa_glsl_parse_state as the talloc parent, not glsl_shader.Kenneth Graunke
_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.
2010-06-29glsl2: Use talloc_strdup when generating constructor temporary namesIan Romanick
2010-06-29glsl2: Don't flatten constructor parameters to scalarsIan Romanick
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.
2010-06-29glsl2: Always emit matrix constructors inlineIan Romanick
2010-06-29glsl2: Always emit vector constructors inlineIan Romanick
2010-06-28glsl2: Use i2b and f2b IR opcodes for casting int or float to boolIan Romanick
2010-06-24glsl2: Move the compiler to the subdirectory it will live in in Mesa.Eric Anholt