Carl Worth
7fd7104fbb
ir_variable: Add some missing initialization to the constructor.
...
Thanks to valgrind for noticing this problem.
2010-06-23 16:12:53 -07:00
Eric Anholt
a9d58ad6c9
Fix double usage of the post-inc/dec's temporary pre-inc/dec copy.
...
Fixes CorrectSwizzle3.frag.
2010-06-23 15:20:29 -07:00
Eric Anholt
2731a739d0
Avoid using the RHS of an assignment twice.
...
This would fix double-evaluation of assignment RHS expressions,
including possible side effects.
2010-06-23 15:20:29 -07:00
Eric Anholt
959a9ecdd8
get_lvalue_copy doesn't need all the checking of do_assignment().
2010-06-23 15:20:29 -07:00
Eric Anholt
3e24ef68a9
ast_to_hir: Clone LHS derefs of assignment expressions.
2010-06-23 15:20:29 -07:00
Eric Anholt
8006576b36
ir_function_inlining: Allow inlining of loops and conditionals.
...
The new cloning code handles them.
2010-06-23 15:20:29 -07:00
Eric Anholt
4b6fd39c89
Add a virtual clone() method to ir_instruction.
...
This will be used by function inlining, the linker, and avoiding double
usage of the LHS deref chains in ++, *=, and similar operations.
2010-06-23 15:20:29 -07:00
Eric Anholt
02fc4b34e4
Avoid using the same ir_constant 0.0 multiple times in mat constructors.
2010-06-23 15:20:29 -07:00
Kenneth Graunke
bc1097d151
glcpp: Support line continuations within preprocessor directives.
...
Fixes CorrectPreprocess5.frag.
2010-06-23 14:14:57 -07:00
Kenneth Graunke
186e2634bf
glcpp: Make standalone binary use preprocess().
...
This prevents the two code paths from getting out of sync. Also, future
work will need the shader source as a string anyway.
Unfortunately, this copies and pastes load_text_file from main.cpp, with
small changes (support for reading from stdin, talloc).
2010-06-23 14:14:57 -07:00
Kenneth Graunke
12a820c9d8
glcpp: Fix "dangerous trailing context" warning.
...
Flex couldn't be sure whether "def" and "ndef" were part of the #ifdef
and #ifndef patterns or the trailing context of the #if pattern.
2010-06-23 14:14:57 -07:00
Kenneth Graunke
d07bb7b83a
Remove comment support from the main lexer.
...
Now handled by the preprocessor.
2010-06-23 14:14:57 -07:00
Kenneth Graunke
e6ae7afc0c
glcpp: Recognize plain "//" as a comment.
...
Found in glsl-orangebook-ch06-bump.(frag|vert). This was resulting in
the comments getting passed through to the main compiler's lexer.
2010-06-23 14:14:57 -07:00
Ian Romanick
fa455fc2a5
Generate errors for empty constructors instead of asserting
...
This causes the following tests to pass:
glslparsertest/glsl2/constructor-10.vert
2010-06-23 13:58:34 -07:00
Ian Romanick
3ed850e91c
linker: Update some comments, remove a couple FINISHMEs
2010-06-23 12:18:21 -07:00
Ian Romanick
553dcdcaaf
linker: Use InfoLog in assign_attribute_locations
...
Since the program is now passed in, refactor the parameter list to the
function as well.
2010-06-23 12:14:02 -07:00
Ian Romanick
ed1fe3db3b
linker: Refactor parameters to cross_validate_uniforms
2010-06-23 12:09:14 -07:00
Ian Romanick
f36460e1a7
linker: Write errors to info log instead of stdout
2010-06-23 12:07:22 -07:00
Ian Romanick
0e59b2698a
linker: Initial implementation of varying slot allocation
2010-06-23 11:24:26 -07:00
Ian Romanick
9342d269a4
linker: Limit attribute allocation to MAX_VERTEX_ATTRIBS
2010-06-23 11:24:26 -07:00
Ian Romanick
6984670f97
linker: Support matrix and array vertex inputs
2010-06-23 11:24:26 -07:00
Ian Romanick
0ad22cd1ce
linker: Initial implementation of attribute slot allocation
2010-06-23 11:24:26 -07:00
Ian Romanick
a8ca9cbc69
Import some bits Mesa's mtypes.h
2010-06-23 11:24:26 -07:00
Ian Romanick
4485c5ae78
Import gl_program_parameter and gl_program_parameter_list types from Mesa
2010-06-23 11:24:26 -07:00
Ian Romanick
abee16e8cb
linker: Store the par-linked per-stage shaders in the glsl_program
2010-06-23 11:24:26 -07:00
Ian Romanick
019a59b264
linker: Initial implementation of uniform slot allocation
2010-06-23 11:24:21 -07:00
Ian Romanick
5edf6f98d8
Import gl_uniform and gl_uniform_list types from Mesa
2010-06-23 10:56:04 -07:00
Ian Romanick
8b80e9f9e3
ir_variable: Add query to get number of slots used by a variable
2010-06-23 10:56:04 -07:00
Ian Romanick
57bb893a46
glsl_type: Add method to get number of slots used by a type
2010-06-23 10:56:04 -07:00
Ian Romanick
13e10e43c3
linker: Document what remains to be done
2010-06-23 10:56:04 -07:00
Ian Romanick
ed0626ebc7
ir_variable: Set locations for shader built-in variables
2010-06-23 10:56:03 -07:00
Ian Romanick
69a079aee8
ir_variable: Track the location of uniforms, varings, attributes, etc.
2010-06-23 10:56:03 -07:00
Ian Romanick
371019248e
linker: Initial implementation of interstage input / output validation
2010-06-23 10:56:03 -07:00
Ian Romanick
950ceb2bd6
ir_variable: Add method to get string representing interpolation qualifier
2010-06-23 10:56:03 -07:00
Ian Romanick
cc22c5a544
linker: Initial implementation of interstage uniform validation
2010-06-23 10:56:03 -07:00
Ian Romanick
1e8b7a714e
ir_constant: Add method to determine if two constants have the same value
2010-06-23 10:56:03 -07:00
Eric Anholt
53e48d3f63
Fix multiple usage of an rvalue in constructor component splitting.
...
Store the thing in a variable and deref it for each swizzle if we have to.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
2010-06-23 10:55:25 -07:00
Ian Romanick
865cf2d1f5
ir_validate: Use callback functionality in ir_hierarchical_visitor
2010-06-23 09:25:33 -07:00
Ian Romanick
7c09576a97
ir_hierarchical_visitor: Add generic callback functionality
2010-06-23 09:25:28 -07:00
Eric Anholt
53cdb7e51d
ir_validate: New pass for checking our invariants.
2010-06-22 18:18:30 -07:00
Eric Anholt
e46a454305
ir: Give ir_instruction a print visitor helper.
...
This avoids spamming each file with includes of ir_print_visitor.h
because someone was doing debugging at some point, and is less typing
when doing debugging.
2010-06-22 18:18:30 -07:00
Eric Anholt
216580dbd7
Hook up texturing in the hierarchical visitor.
2010-06-22 18:18:30 -07:00
Eric Anholt
ac95f2f8c8
Include stdio.h and stdlib.h everywhere, and don't cook our own #define NULL.
2010-06-22 12:30:55 -07:00
Ian Romanick
b302359394
Add missing build products to gitignore
2010-06-22 12:24:42 -07:00
Kenneth Graunke
1b85c46bcf
glcpp: Initialize error state.
2010-06-21 13:55:12 -07:00
Kenneth Graunke
332fc47dc0
glcpp: Accept #elif without an expression if the expression doesn't matter.
...
Issue a warning. nVidia's compiler seems to accept this; apparently
GCC < 4.4 did as well: http://gcc.gnu.org/gcc-4.4/porting_to.html
2010-06-21 12:41:05 -07:00
Kenneth Graunke
74704e80c6
glcpp: Print to the main compiler's infolog, not stdout.
2010-06-21 12:41:05 -07:00
Kenneth Graunke
4a2bbdacfc
Use yy_scan_string and stop caring about shader->SourceLen.
...
We had to call strlen on the preprocessed source, which seemed a bit
pointless; also, we updated shader->SourceLen but not shader->Source,
which was even more confusing. Just leave both untouched.
2010-06-21 12:41:05 -07:00
Kenneth Graunke
26e761edb2
glcpp: Rework handling of "defined" operator.
...
It's now done in the grammar, and as a result, can easily handle
parenthesis. defined ( identifier ) is now supported.
Fixes glcpp/tests/065-if-defined-parens.c.
2010-06-21 12:41:05 -07:00
Kenneth Graunke
bac0e371e3
glcpp/tests: Add a test for #if defined (identifier)
...
Previously we only tested #if defined identifier (without parenthesis).
2010-06-21 12:41:05 -07:00