summaryrefslogtreecommitdiff
path: root/src/glsl/ir_constant_variable.cpp
AgeCommit message (Collapse)Author
2010-08-04glsl2: Add ir_assignment::write_mask and associated methodsIan Romanick
Replace swizzles on the LHS with additional swizzles on the RHS and a write mask in the assignment instruction. As part of this add ir_assignment::set_lhs. Ideally we'd make ir_assignment::lhs private to prevent erroneous writes, but that would require a lot of code butchery at this point. Add ir_assignment constructor that takes an explicit write mask. This is required for ir_assignment::clone, but it can also be used in other places. Without this, ir_assignment clones lose their write masks, and incorrect IR is generated in optimization passes. Add ir_assignment::whole_variable_written method. This method gets the variable on the LHS if the whole variable is written or NULL otherwise. This is different from ir->lhs->whole_variable_referenced() because the latter has no knowledge of the write mask stored in the ir_assignment. Gut all code from ir_to_mesa that handled swizzles on the LHS of assignments. There is probably some other refactoring that could be done here, but that can be left for another day.
2010-07-29ir_constant_variable: Don't mark variable from outside our scope as constant.Eric Anholt
Fixes (with software, except for alpha): glsl1-function with early return(3)
2010-07-20glsl2: Don't mark a variable as constant if it was used as an out param.Eric Anholt
2010-06-24glsl2: Move the compiler to the subdirectory it will live in in Mesa.Eric Anholt