summaryrefslogtreecommitdiff
path: root/src/glsl/ir_print_visitor.cpp
AgeCommit message (Collapse)Author
2011-03-14glsl: Explicitly specify a type when reading/printing ir_texture.Kenneth Graunke
This is necessary for GLSL 1.30+ shadow sampling functions, which return a single float rather than splatting the value to a vec4 based on GL_DEPTH_TEXTURE_MODE.
2011-02-21Use C-style system headers in C++ code to avoid issues with std:: namespaceIan Romanick
2011-02-03glsl: Add using statements for standard library functions.Vinson Lee
Standard library functions in C++ are in the std namespace. When using C++-style header files for the standard library, some compilers, such as Sun Studio, provide symbols only for the std namespace and not for the global namespace. This patch adds using statements for standard library functions. Another option could have been to prepend standard library function calls with 'std::'. This patch fixes several compilation errors with Sun Studio.
2011-01-31glsl: Introduce a new "const_in" variable mode.Kenneth Graunke
This annotation is for an "in" function parameter for which it is only legal to pass constant expressions. The only known example of this, currently, is the textureOffset functions. This should never be used for globals.
2011-01-31glsl: Change texel offsets to a single vector rvalue.Kenneth Graunke
Having these as actual integer values makes it difficult to implement the texture*Offset built-in functions, since the offset is actually a function parameter (which doesn't have a constant value). The original rationale was that some hardware needs these offset baked into the instruction opcode. However, at least i965 should be able to support non-constant offsets. Others should be able to rely on inlining and constant propagation.
2011-01-31glsl: Re-synchronize ir_variable_mode and the printer's string array.Kenneth Graunke
Since the introduction of ir_var_system_value, system variables would be printed as "temporary" and temporaries would result in out-of-bounds array access, showing up as garbage in printed IR.
2011-01-12ir_reader: Make assignment conditions optional.Kenneth Graunke
You can now simply write (assign (xy) <lhs> <rhs>) instead of the verbose (assign (constant bool (1)) (xy) <lhs> <rhs>).
2010-12-03ir_print_visitor: Print out constant structure values.Kenneth Graunke
In the form (constant type ((field1 value) (field2 value) ...))
2010-11-30glsl: Remove anti-built-in hacks from the print visitor.Kenneth Graunke
Now that we only import built-in signatures that are actually used, printing them is reasonable.
2010-11-19glsl: Eliminate assumptions about size of ir_expression::operandsIan Romanick
This may grow in the near future.
2010-09-16glsl: Don't print blank (function ...) headers for built-ins.Kenneth Graunke
Fixes a regression caused when I added my GLSL ES support.
2010-09-07glsl: Move is_builtin flag back to ir_function_signature.Kenneth Graunke
This effectively reverts b6f15869b324ae64a00d0fe46fa3c8c62c1edb6c. In desktop GLSL, defining a function with the same name as a built-in hides that built-in function completely, so there would never be built-in and user function signatures in the same ir_function. However, in GLSL ES, overloading built-ins is allowed, and does not hide the built-in signatures - so we're back to needing this.
2010-09-03ir_print_visitor: Print empty else blocks more compactlyIan Romanick
2010-08-26glsl: Move is_built_in flag from ir_function_signature to ir_function.Kenneth Graunke
Also rename it to "is_builtin" for consistency. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
2010-08-11glsl2: added casts to silence warningsBrian Paul
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-29glsl2: Allow use of _mesa_print_ir without a parse state on hand.Eric Anholt
2010-07-29glsl2: When dumping IR for debug, indent nested blocks.Eric Anholt
No more trying to match parens in my head when looking at the body of a short function containing an if statement.
2010-07-29glsl2: When dumping IR for debug, skip all the empty builtin prototypes.Eric Anholt
2010-07-22ir_print_visitor: Add "temporary" to mode string printing.Kenneth Graunke
Variables with mode ir_var_temporary were causing an out of bounds array access and filling my screen with rubbish. I'm not sure if "temporary" is the right thing to print.
2010-07-21ir_print_visitor: Print out constant arrays.Kenneth Graunke
2010-07-21ir_print_visitor: Remove commas between ir_constant's components.Kenneth Graunke
The IR reader does not expect commas.
2010-06-30glsl2: Define new ir_discard instruction.Kenneth Graunke
2010-06-24glsl2: Move the compiler to the subdirectory it will live in in Mesa.Eric Anholt