summaryrefslogtreecommitdiff
path: root/glsl_parser_extras.cpp
AgeCommit message (Collapse)Author
2010-06-07Don't process empty shadersIan Romanick
Some valid shaders, such as 'precision highp float;', evaluate to empty sets of instructions. This causes some of the optimization stages to enter infinite loops. Instead, don't bother processing the empty ones.
2010-06-01ir_constant_variable: New pass to mark constant-assigned variables constant.Eric Anholt
This removes a bunch of gratuitous moving around of constant values from constructors. Makes a shader ir I was looking at for structure handling almost readable.
2010-06-01ir_swizzle_swizzle: Reduce swizzle chains to a single swizzle.Eric Anholt
2010-06-01ir_vec_index_to_swizzle: Pass to convert indexing of vectors to swizzles.Eric Anholt
This should remove the burden of handling constant vector indexing well from backend codegen, and could help with swizzle optimizations.
2010-05-14Fix function call parameter printer to omit extraneous leading commaIan Romanick
The output of all test cases was verified to be the same using diff.
2010-05-10Convert ast_node use of simple_node to exec_list and exec_nodeIan Romanick
2010-05-10Store AST function call parameters in expressionsIan Romanick
Previously the list of function call parameters was stored as a circular list in ast_expression::subexpressions[1]. They are now stored as a regular list in ast_expression::expressions.
2010-05-05Move optimization pass prototypes to a single header.Eric Anholt
2010-05-05ir_dead_code_local: Remove redundant assignments within basic blocks.Eric Anholt
This cleans up a bunch of junk code in some of the GLSL parser tests, and could potentially help real-world too (particularly after copy propagation has happened).
2010-05-04ir_copy_propagation: New pass to rewrite dereferences to avoid copies.Eric Anholt
This is pretty basic. Right now it only handles pure assignments -- same type on each side, no swizzling, and only within basic blocks.
2010-05-03Store warnings and errors in a parser state infolog.Eric Anholt
Cleans up compile warning about unused state in _mesa_glsl_warning. We would want infolog handling roughly like this anyway.
2010-05-03Quiet warnings about ir_shader not being handled in places it's not needed.Eric Anholt
2010-04-28IR print visitor: Move logic for printing the whole program to _mesa_print_irIan Romanick
2010-04-28Set language_version to 130 (the max currently supported) when reading IR.Kenneth Graunke
This is necessary so _mesa_glsl_initialize_types can create appropriate glsl_types and add them to the symbol table. In the future, we'll want to set it to the max GLSL version supported by the current driver.
2010-04-28Add stub ir_reader and new 'i' mode for reading IR rather than GLSL.Kenneth Graunke
2010-04-28Add parens around printed IR so it's an official list of instructions.Kenneth Graunke
2010-04-23Zero-out the entire parser state structure at initializationIan Romanick
Among other things, this ensures that all of the extension flags are initially disabled. This causes the following tests to pass: glslparsertest/glsl2/draw_buffers-02.frag
2010-04-23Add missing 'else's to fix extension processingIan Romanick
The missing else-statements caused all of the extensions execpt GL_ARB_texture_rectangle to be unsupported. This causes the following tests to pass: glslparsertest/glsl2/draw_buffers-04.frag
2010-04-19Remove dead code assignments and variable declarations.Eric Anholt
This pass only works on assignments where the variable is never referenced. There is no code flow analysis, so it can't do a better job of avoiding redundant assignments. For now, the optimizer only does do_dead_code_unlinked(), so it won't trim the builtin variable list or initializers outside of the scope of functions. This is because we don't have the visibility into other functions that might get linked in in order to eliminate work on global variables.
2010-04-14Add an ir_if simplification pass.Eric Anholt
This is relatively simple at the moment, recognizing only constant values, and not (for example) values that are restricted to a range that make the branching constant. However, it does remove 59 lines from the printout of CorrectParse2.vert.
2010-04-08Repeat the optimization passes until we stop making progress.Eric Anholt
2010-04-08Inline functions consisting of a return of an expression.Eric Anholt
2010-04-07Treat texture rectangles as an extension that is enabled be defaultIan Romanick
2010-04-07Add support for GL_ARB_draw_buffers extensionIan Romanick
2010-04-07Clean up error reporting in _mesa_glsl_process_extensionIan Romanick
2010-04-07Emit a warning when an unknown extension is used with #extensionIan Romanick
2010-04-07Add _mesa_glsl_warning to emit warnings to the shader logIan Romanick
2010-04-07Begin processing #extension directiveIan Romanick
Nowhere near complete. It just parses correctly at this point.
2010-04-07Add utility function to get the name of a shader targetIan Romanick
2010-04-07Begin tracking the nesting of loops and switch-statementsIan Romanick
2010-04-06Make constant folding descend into if statements.Eric Anholt
2010-04-06Add a constant folding optimization pass.Eric Anholt
2010-04-02Remove ast_node::typeIan Romanick
It isn't a type (is was enum specifying the kind of node), it was unused, and it was easily confused with actual type fields. Kill with fire.
2010-03-31Add ast_function::hirIan Romanick
ast_function::hir consists of bits pulled out of ast_function_definition::hir. In fact, the later uses the former to do a lot of its processing. Several class private data fields were added to ast_function to facilitate communicate between the two. This causes the following tests to pass: glslparsertest/shaders/CorrectModule.frag This causes the following tests to fail. These shaders were previously failing to compile, but they were all failing for the wrong reasons. glslparsertest/shaders/function9.frag glslparsertest/shaders/function10.frag
2010-03-29Add generate_temporary to generate an anonymous temporaryIan Romanick
2010-03-25IR print visitor: Remove most of the newlines from the printed outputIan Romanick
This makes it a lot easier to read... if you have a really wide display.
2010-03-25Make the standalone parser return an exit code so we can automate testing.Eric Anholt
2010-03-23Disallow passing NULL for state to _mesa_glsl_errorIan Romanick
The two places that were still passing NULL had a state pointer to pass. Not passing it in these places prevented termination of compilation of erroneous programs.
2010-03-19Use glsl_symbol_table instead of using _mesa_symbol_table directlyIan Romanick
2010-03-15Factor ast_type_specifier code out to ast_type.cppIan Romanick
2010-03-11Track generation of errors and halt compilation appropriatelyIan Romanick
2010-03-10Move top-level AST to HIR conversion to _mesa_ast_to_hirIan Romanick
2010-03-10Require the shader target be specified to the driver programIan Romanick
2010-03-10Use ir_print_visitor to dump IR treeIan Romanick
2010-03-08Conver IR structures to use exec_list instead of simple_nodeIan Romanick
2010-03-01Make AST->HIR conversion a method of ast_node, re-enableIan Romanick
2010-02-25autoconf for the ...Ian Romanick
2010-02-25Replace tacky wrapper macros with tacky in-line type-castsIan Romanick
2010-02-22Add ast_expression_bin subclass of ast_expressionIan Romanick
The ast_expression_bin subclass is used for all binary expressions such as addition, subtraction, and comparisons. Several other subclasses are soon to follow.
2010-02-22Rename .cc files to .cppIan Romanick