summaryrefslogtreecommitdiffstats
path: root/src/glsl/ast_function.cpp
Commit message (Collapse)AuthorAgeFilesLines
* glsl2: Generate masked assignments in vector and matrix constructorsIan Romanick2010-08-041-36/+46
| | | | | | | 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.
* glsl2: Remove uses of deprecated TALLOC_CTX type.Kenneth Graunke2010-08-041-6/+6
|
* glsl2: No need to strdup the name passed in to ir_variable constructor.Eric Anholt2010-08-031-13/+5
| | | | | ir_variable always strdups the incoming name so that it matches the lifetime of the ir_variable.
* glsl2: Fix spelling of "sentinel."Eric Anholt2010-07-291-3/+3
|
* ast_function: Set constant_value on return value temporaries in 1.20+.Kenneth Graunke2010-07-281-0/+2
|
* glsl2: Extend ir_constant to store constant arrays, and generate them.Kenneth Graunke2010-07-211-3/+2
| | | | | | | | | 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.
* glsl2: Emit array constructors inline.Kenneth Graunke2010-07-211-11/+53
|
* glsl2: Add some comments.Kenneth Graunke2010-07-211-1/+4
|
* glsl2: Replace insert_before/remove pairs with exec_node::replace_with.Kenneth Graunke2010-07-211-2/+1
|
* glsl2: glsl_type has its own talloc context, don't pass one inIan Romanick2010-07-201-2/+1
|
* glsl2: Add and use new variable mode ir_var_temporaryIan Romanick2010-07-201-7/+14
| | | | | | | | | | | | | | | | | 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'.
* glsl2: Always insert function calls into the instruction stream.Eric Anholt2010-07-201-1/+24
| | | | | | 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.
* glsl2: Remove the const disease from function signature's callee.Eric Anholt2010-07-181-2/+1
|
* ast_function: Actually do type conversion on function arguments.Kenneth Graunke2010-07-141-3/+8
|
* ast_function: Fix non-float constructors with matrix arguments.Kenneth Graunke2010-07-091-22/+55
| | | | | | | | | | 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.
* ast_function: Move error return earlier and don't indent the world.Kenneth Graunke2010-07-091-142/+139
| | | | This has no functional changes.
* ast_function: Remove unnecessary check for empty constructors.Kenneth Graunke2010-07-091-9/+0
| | | | | This case is already caught by a later check that ensures sufficient components were provided, based on the type.
* glsl2: Use _mesa_glsl_parse_state as the talloc parent, not glsl_shader.Kenneth Graunke2010-06-301-5/+5
| | | | | | | | | | | | | _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.
* glsl2: Use talloc_strdup when generating constructor temporary namesIan Romanick2010-06-291-8/+13
|
* glsl2: Don't flatten constructor parameters to scalarsIan Romanick2010-06-291-129/+59
| | | | | | | | 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.
* glsl2: Always emit matrix constructors inlineIan Romanick2010-06-291-1/+321
|
* glsl2: Always emit vector constructors inlineIan Romanick2010-06-291-1/+100
|
* glsl2: Use i2b and f2b IR opcodes for casting int or float to boolIan Romanick2010-06-281-9/+9
|
* glsl2: Move the compiler to the subdirectory it will live in in Mesa.Eric Anholt2010-06-241-0/+751