aboutsummaryrefslogtreecommitdiffstats
path: root/src/glsl/glsl_symbol_table.h
Commit message (Collapse)AuthorAgeFilesLines
* glsl: make consistent use of DECLARE_RALLOC_CXX_OPERATORSIlia Mirkin2014-10-021-31/+2
| | | | | Signed-off-by: Ilia Mirkin <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Fix clang mismatched-tags warnings with glsl_type.Vinson Lee2014-06-151-1/+1
| | | | | | | | | | | | | | | | | | Fix clang mismatched-tags warnings introduced with commit 4f5445a45d3ed02e00a061b10c943c0b079c6020. ./glsl_symbol_table.h:37:1: warning: class 'glsl_type' was previously declared as a struct [-Wmismatched-tags] class glsl_type; ^ ./glsl_types.h:86:8: note: previous use is here struct glsl_type { ^ ./glsl_symbol_table.h:37:1: note: did you mean struct here? class glsl_type; ^~~~~ Signed-off-by: Vinson Lee <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* glsl: Remove unused include from glsl_symbol_table.hThomas Helland2014-06-101-1/+1
| | | | | | | | | | | | | Only function-defs use glsl_type so forward declare instead. Compile-tested on my Ivy-bridge system. IWYU also suggests removing #include <new>, and this compiles fine. I'm not familiar enough with memory management in C/C++ that I feel comfortable removing this. Insights would be appreciated. Reviewed-by: Tom Stellard <[email protected]> Reviewed-by: Matt Turner <[email protected]> Signed-off-by: Thomas Helland <[email protected]>
* glsl: remove {add,get}_type_ast from glsl_symbol_tableChia-I Wu2014-03-281-2/+0
| | | | | | | They are not needed since 0da1a2cc369052643ccaea75a1722cc37652d82a. Signed-off-by: Chia-I Wu <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* glsl: Make it possible to disable a variable in the symbol table.Paul Berry2013-10-101-0/+8
| | | | | | | | | | | | | In later patches, we'll use this in order to implement the required behaviour that after the gl_PerVertex interface block has been redeclared, only members of the redeclared interface block may be used. v2: Update the function name and comment to clarify that we aren't actually removing the variable from the symbol table, just disabling it. Reviewed-by: Ian Romanick <[email protected]>
* glsl: Track structs' ast_type_specifiers in symbol table.Matt Turner2013-07-111-0/+2
| | | | | | | | | Will be used in a future commit. An ast_type_specifier is stored (rather than an ast_struct_specifier) with the idea that we may have more general uses for this in the future. struct names are prefixed with '#ast.' to avoid collisions with the glsl_types in the symbol table. Reviewed-by: Ian Romanick <[email protected]>
* glsl_symbol_table: add interface block namespacesJordan Justen2013-05-231-0/+4
| | | | | | | | For interface blocks, there are three separate namespaces for uniform, input and output blocks. Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Track blocks in the symbol table using the glsl_type instead of the ↵Ian Romanick2013-01-251-1/+0
| | | | | | | | | | | | | gl_uniform_block Eventually the gl_uniform_block information won't be calculated until linking. Block names need to be checked for name clashes during compiling, so we have to track it differently. v2: Update the commit message. Suggested by Carl Worth. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Track UBO block names in the symbol table.Kenneth Graunke2013-01-181-0/+1
| | | | | | | | | | | | | | | | | | | | The GLSL 1.40 spec says: "Uniform block names and variable names declared within uniform blocks are scoped at the program level." Track the block name in the symbol table and emit errors when conflicts exist. Fixes es3conform's uniform_buffer_object_block_name_conflict test, and fixes the piglit block-name-clashes-with-{variable,function,struct}.vert tests. NOTE: This is a candidate for the 9.0 branch. v2: Fix bad constructor initialization. Noticed by Topi Pohjolainen. Reviewed-by: Ian Romanick <[email protected]>
* glsl: Simplify symbol table version checking.Paul Berry2012-12-061-1/+2
| | | | | | | | | | | Previously, we stored the GLSL language version in the glsl_symbol_table struct. But this was unnecessary--all glsl_symbol_table needs to know is whether functions and variables have separate namespaces (they do in GLSL 1.10 only). Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Acked-by: Carl Worth <[email protected]>
* Convert everything from the talloc API to the ralloc API.Kenneth Graunke2011-01-311-11/+9
|
* glsl: Properly add functions during lazy built-in prototype importing.Kenneth Graunke2010-12-061-0/+5
| | | | | | | | | | | | The original lazy built-in importing patch did not add the newly created function to the symbol table, nor actually emit it into the IR stream. Adding it to the symbol table is non-trivial since importing occurs when generating some ir_call in a nested scope. A new add_global_function method, backed by new symbol_table code in the previous patch, handles this. Fixes bug #32030.
* glsl: Make the symbol table's add_variable just use the variable's name.Eric Anholt2010-11-291-1/+1
|
* glsl: Make the symbol table's add_function just use the function's name.Eric Anholt2010-11-291-1/+1
|
* glsl2: Remove unnecessary glsl_symbol_table::get_function parameter ↵Ian Romanick2010-09-011-1/+1
| | | | | | | | return_constructors Now that constructors are not generated as functions or stored in the symbol table, there is no need to flag whether or not constructors should be returned.
* glsl2: Remove unused 'constructor' parameter from glsl_symbol_table::add_typeIan Romanick2010-09-011-2/+1
|
* glsl: Don't add overloads to existing structure constructors.Kenneth Graunke2010-08-261-1/+1
| | | | | | Instead, make a new ir_function and try to add it to the symbol table. Fixes piglit test redeclaration-08.vert.
* glsl: Use a single shared namespace in the symbol table.Kenneth Graunke2010-08-261-67/+18
| | | | | | | | | | | | As of 1.20, variable names, function names, and structure type names all share a single namespace, and should conflict with one another in the same scope, or hide each other in nested scopes. However, in 1.10, variables and functions can share the same name in the same scope. Structure types, however, conflict with/hide both. Fixes piglit tests redeclaration-06.vert, redeclaration-11.vert, redeclaration-19.vert, and struct-05.vert.
* glsl: Standardize a few more uses of struct vs class keyword.José Fonseca2010-08-141-1/+1
|
* glsl2: Add a pass for removing unused functions.Eric Anholt2010-08-051-0/+6
| | | | | | | | | For a shader involving many small functions, this avoids running optimization across all of them after they've been inlined post-linking. Reduces the runtime of linking and running a fragment shader from Yo Frankie from 1.6 seconds to 0.9 seconds (-44.9%, +/- 3.3%).
* Merge remote branch 'origin/master' into glsl2Eric Anholt2010-07-261-1/+1
| | | | | | | | | | | This pulls in multiple i965 driver fixes which will help ensure better testing coverage during development, and also gets past the conflicts of the src/mesa/shader -> src/mesa/program move. Conflicts: src/mesa/Makefile src/mesa/main/shaderapi.c src/mesa/main/shaderobj.h
* glsl2: Wrap includes of C interfaces with extern "C".Eric Anholt2010-06-241-0/+2
|
* glsl2: Move the compiler to the subdirectory it will live in in Mesa.Eric Anholt2010-06-241-0/+163