summaryrefslogtreecommitdiff
path: root/glsl_parser_extras.cpp
AgeCommit message (Collapse)AuthorFilesLines
2010-06-23ast_node: Remove empty destructor.HEADmasterCarl Worth1-7/+0
This wasn't serving any purpose. So delete it.
2010-06-19Change error/warning functions to print to the info log.Kenneth Graunke1-24/+20
2010-06-14Move stand-alone compiler main routine to main.cppIan Romanick1-148/+0
2010-06-09Don't call _mesa_glsl_initialize_types for every builtin function.Kenneth Graunke1-0/+1
This was clearly wrong; types are now only initialized once.
2010-06-09Only initialize types after #extension directives have been processed.Kenneth Graunke1-1/+1
Since _mesa_glsl_initialize_types add types for various extensions, we can't call it until after processing "#extension foo : disable" lines. Fixes tex_rect_02.frag.
2010-06-07Don't process empty shadersIan Romanick1-2/+3
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 Anholt1-0/+1
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 Anholt1-0/+1
2010-06-01ir_vec_index_to_swizzle: Pass to convert indexing of vectors to swizzles.Eric Anholt1-0/+1
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 commasimple_list_die_die_dieIan Romanick1-1/+2
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 Romanick1-52/+29
2010-05-10Store AST function call parameters in expressionsIan Romanick1-10/+4
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 Anholt1-9/+1
2010-05-05ir_dead_code_local: Remove redundant assignments within basic blocks.Eric Anholt1-0/+2
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 Anholt1-0/+2
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 Anholt1-1/+9
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 Anholt1-0/+1
2010-04-28IR print visitor: Move logic for printing the whole program to _mesa_print_irIan Romanick1-8/+1
2010-04-28Set language_version to 130 (the max currently supported) when reading IR.Kenneth Graunke1-0/+5
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 Graunke1-9/+17
2010-04-28Add parens around printed IR so it's an official list of instructions.Kenneth Graunke1-0/+2
2010-04-23Zero-out the entire parser state structure at initializationIan Romanick1-0/+2
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 Romanick1-2/+2
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 Anholt1-0/+2
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 Anholt1-0/+2
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 Anholt1-4/+9
2010-04-08Inline functions consisting of a return of an expression.Eric Anholt1-0/+3
2010-04-07Treat texture rectangles as an extension that is enabled be defaultIan Romanick1-0/+4
2010-04-07Add support for GL_ARB_draw_buffers extensionIan Romanick1-0/+9
2010-04-07Clean up error reporting in _mesa_glsl_process_extensionIan Romanick1-5/+12
2010-04-07Emit a warning when an unknown extension is used with #extensionIan Romanick1-0/+3
2010-04-07Add _mesa_glsl_warning to emit warnings to the shader logIan Romanick1-0/+19
2010-04-07Begin processing #extension directiveIan Romanick1-0/+47
Nowhere near complete. It just parses correctly at this point.
2010-04-07Add utility function to get the name of a shader targetIan Romanick1-0/+13
2010-04-07Begin tracking the nesting of loops and switch-statementsIan Romanick1-0/+1
2010-04-06Make constant folding descend into if statements.Eric Anholt1-4/+2
2010-04-06Add a constant folding optimization pass.Eric Anholt1-0/+11
2010-04-02Remove ast_node::typeIan Romanick1-1/+1
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 Romanick1-0/+1
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 Romanick1-0/+1
2010-03-25IR print visitor: Remove most of the newlines from the printed outputIan Romanick1-0/+1
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 Anholt1-1/+1
2010-03-23Disallow passing NULL for state to _mesa_glsl_errorIan Romanick1-2/+1
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 Romanick1-3/+2
2010-03-15Factor ast_type_specifier code out to ast_type.cppIan Romanick1-77/+0
2010-03-11Track generation of errors and halt compilation appropriatelyIan Romanick1-5/+12
2010-03-10Move top-level AST to HIR conversion to _mesa_ast_to_hirIan Romanick1-3/+1
2010-03-10Require the shader target be specified to the driver programIan Romanick1-2/+21
2010-03-10Use ir_print_visitor to dump IR treeIan Romanick1-0/+8
2010-03-08Conver IR structures to use exec_list instead of simple_nodeIan Romanick1-2/+1