Kenneth Graunke
c98deb18d5
ast_to_hir: Reject embedded structure definitions in GLSL ES 1.00.
2010-09-07 17:30:38 -07:00
Kenneth Graunke
d8e34e29eb
ast_to_hir: Reject unsized array declarations in GLSL ES 1.00.
2010-09-07 17:30:38 -07:00
Kenneth Graunke
b4ec3f268c
ast_to_hir: Allow matrix-from-matrix constructors in GLSL ES.
...
Everything but 1.10 supports this, so just change the check to ==.
2010-09-07 17:30:38 -07:00
Kenneth Graunke
5a81d057db
linker: Fix assertion and cross-version checks for version 100.
...
Fixes an assert (min_version >= 110) which was no longer correct, and
also prohibits linking ES2 shaders with non-ES2 shaders. I'm not
positive this is correct, but the specification doesn't seem to say.
2010-09-07 17:30:38 -07:00
Kenneth Graunke
116dc670e9
glsl: Add built-in function profiles for GLSL ES 1.00.
2010-09-07 17:30:38 -07:00
Kenneth Graunke
b4fe4d52b6
glsl: Add built-in variables for GLSL ES 1.00.
2010-09-07 17:30:38 -07:00
Kenneth Graunke
76deef138e
glsl: Split out types that are in 1.10 but not GLSL ES 1.00.
2010-09-07 17:30:37 -07:00
Kenneth Graunke
c5e74871d9
glsl: Recognize GLSL ES 1.00 keywords.
2010-09-07 17:30:37 -07:00
Kenneth Graunke
7dcfc44b72
glsl: Define GL_ES preprocessor macro if API is OpenGL ES 2.0.
...
Also define it if #version 100 is encountered.
2010-09-07 17:30:37 -07:00
Kenneth Graunke
719caa403e
glsl: Accept language version 100 and make it the default on ES2.
2010-09-07 17:30:37 -07:00
Kenneth Graunke
814c89abdb
glsl: Set default language version in mesa_glsl_parse_state constructor.
...
This should make it easier to change the default version based on the
API (say, version 1.00 for OpenGL ES).
Also, synchronize the symbol table's version with the parse state's
version just before doing AST-to-HIR. This way, it will be set when
it matters, but the main initialization code doesn't have to care about
the symbol table.
2010-09-07 17:30:37 -07:00
Ian Romanick
f09fabc448
glsl2: Forbid array-types in ?: operator in GLSL 1.10
...
Fixes bugzilla #30039 .
2010-09-07 14:33:29 -07:00
Ian Romanick
956f049fd2
glsl2: Early return with visit_continue in loop_analysis::visit(ir_dereference_variable *)
...
Returning early with visit_continue_with_parent prevented the
then-statements and else-statements of if-statements such as the
following from being processed:
if (some_var) { ... } else { ... }
Fixes piglit test case glsl-fs-loop-nested-if and bugzilla #30030 .
2010-09-07 13:36:32 -07:00
Kenneth Graunke
0427228bbc
glsl: Change grammar rules for selection statements to match the spec.
...
Fixes piglit test case loop-06.vert.
Unfortunately, causes 1 shift/reduce conflict.
2010-09-07 13:17:05 -07:00
Török Edvin
c47b289972
glsl2: check for _NumLinkedShaders being 0
...
Otherwise spring 0.82+.4.0 crashes when starting a game
because prog->_LinkedShaders[0] is NULL.
This also fixes piglit test cases glsl-link-empty-prog-0[12].
2010-09-07 12:27:07 -07:00
José Fonseca
1c009f970e
glsl: Add new files to sconscript.
2010-09-05 10:17:51 +01:00
Kenneth Graunke
9a3df46fbc
ir_reader: Only validate IR when a global 'debug' flag is set.
...
This extra validation is very useful when working on the built-ins, but
in general overkill - the results should stay the same unless the
built-ins or ir_validate have changed.
Also, validating all the built-in functions in every test case makes
piglit run unacceptably slow.
2010-09-05 01:57:37 -07:00
Kenneth Graunke
79088746a2
ir_reader: Run ir_validate on the generated IR.
...
It's just too easy to get something wrong in hand-written IR.
2010-09-04 02:19:38 -07:00
Kenneth Graunke
2809d70723
ir_reader: Emit global variables at the top of the instruction list.
...
Since functions are emitted when scanning for prototypes, functions
always come first, even if the original IR listed the variable
declarations first.
Fixes an ir_validate error (to be turned on in the next commit).
2010-09-04 02:19:38 -07:00
Kenneth Graunke
b758de16e3
ir_reader: Drop support for reading the old assignment format.
2010-09-04 02:19:38 -07:00
Kenneth Graunke
a878107d6c
glsl: Regenerate autogenerated file builtin_function.cpp.
2010-09-04 02:19:37 -07:00
Kenneth Graunke
bacbf941d2
glsl/builtins: Convert assignments to new format (with write mask).
2010-09-04 02:19:37 -07:00
Kenneth Graunke
03a6276477
ir_reader: Read the new assignment format (with write mask).
...
This preserves the ability to read the old format, for momentary
compatibility with all the existing IR implementations of built-ins.
2010-09-04 02:19:37 -07:00
Kenneth Graunke
a71b46a8ad
ir_reader: Track the current function and report it in error messages.
2010-09-04 02:19:37 -07:00
Kenneth Graunke
a7dc8081b6
glsl/builtins: Actually print the info log if reading a builtin failed.
2010-09-04 02:19:37 -07:00
Brian Paul
a5fd039672
exec_list: replace class with struct
...
To match the definition below.
2010-09-03 15:25:55 -06:00
Ian Romanick
f061524f07
glsl2: Use as_constant some places instead of constant_expression_value
...
The places where constant_expression_value are still used in loop
analysis are places where a new expression tree is created and
constant folding won't have happened. This is used, for example, when
we try to determine the maximal loop iteration count.
Based on review comments by Eric. "...rely on constant folding to
have done its job, instead of going all through the subtree again when
it wasn't a constant."
2010-09-03 11:55:22 -07:00
Ian Romanick
4e5b41c2f6
glsl2: Allow copy / constant propagation into array indices
2010-09-03 11:55:22 -07:00
Ian Romanick
de7c3fe31a
glsl2: Add module to perform simple loop unrolling
2010-09-03 11:55:22 -07:00
Ian Romanick
3bcfafcf03
glsl2: Track the number of ir_loop_jump instructions that are in a loop
2010-09-03 11:55:22 -07:00
Ian Romanick
351525d534
ir_expression: Add static operator_string method
...
I've used this in quite a few debug commits that never reached an
up-stream tree.
2010-09-03 11:55:21 -07:00
Ian Romanick
79082b8aca
exec_node: Add insert_before that inserts an entire list
2010-09-03 11:55:21 -07:00
Ian Romanick
7850ce0a99
glsl2: Eliminate zero-iteration loops
2010-09-03 11:55:21 -07:00
Ian Romanick
8df2dbf91d
glsl2: Perform initial bits of loop analysis during compilation
2010-09-03 11:55:21 -07:00
Ian Romanick
bfe3fbb38e
glsl2: Add module to suss out loop control variables from loop analysis data
...
This is the next step on the road to loop unrolling
2010-09-03 11:55:21 -07:00
Ian Romanick
9434a0749f
glsl2: Add module to analyze variables used in loops
...
This is the first step eventually leading to loop unrolling.
2010-09-03 11:55:21 -07:00
Ian Romanick
53acbd87d7
ir_validate: Validate loop control fields in ir_loop
2010-09-03 11:55:21 -07:00
Ian Romanick
3b85f1cc6c
glsl2: Add cmp field to ir_loop
...
This reprents the type of comparison between the loop induction
variable and the loop termination value.
2010-09-03 11:55:21 -07:00
Ian Romanick
c8ee8e07f7
glsl2: Set a flag when visiting the assignee of an assignment
2010-09-03 11:55:21 -07:00
Ian Romanick
29eebe9a9a
exec_list: Add pop_head
2010-09-03 11:55:21 -07:00
Ian Romanick
9710d272f7
ir_print_visitor: Print empty else blocks more compactly
2010-09-03 11:55:21 -07:00
Ian Romanick
6e3cbeb361
glsl2: Update TODO file
2010-09-02 10:11:54 -07:00
Kenneth Graunke
f32d3df8ab
glsl: Apply implicit conversions to structure constructor parameters.
...
The code for handling implicit conversions should probably get
refactored, but for now, this is easy.
Fixes piglit test constructor-26.vert.
2010-09-01 20:39:09 -07:00
Kenneth Graunke
43a6200f3c
glsl: Convert constant record constructor parameters to ir_constants.
...
I'm not sure if this is strictly necessary, but it seems wise.
2010-09-01 20:39:09 -07:00
Kenneth Graunke
cfe0dd5622
glsl: Reject structure constructors that have too many arguments.
...
Fixes piglit test constructor-27.vert.
2010-09-01 20:39:09 -07:00
Ian Romanick
e466b182bb
glsl2: Remove unnecessary glsl_symbol_table::get_function parameter 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.
2010-09-01 20:39:09 -07:00
Ian Romanick
4d6221f90d
glsl2: Remove unused method glsl_type::generate_constructor
2010-09-01 20:39:09 -07:00
Ian Romanick
16d9ebb357
glsl2: Remove unused 'constructor' parameter from glsl_symbol_table::add_type
2010-09-01 20:39:09 -07:00
Ian Romanick
a789ca649c
glsl2: Don't generate constructor functions for structures
2010-09-01 20:39:09 -07:00
Ian Romanick
37200d83d3
glsl2: Emit structure constructors inline
...
Fixes piglit test cases glsl-[fv]s-all-0[12].
2010-09-01 20:39:09 -07:00