Eric Anholt
50ad96ebce
ir_to_mesa: Start doing some int support.
2010-06-24 15:05:20 -07:00
Eric Anholt
315c638b8c
ir_to_mesa: Fix bugs in swizzle handling for scalar operations.
...
Looking at a vec2 / float codegen, the writemasks on the RCPs were wrong and
the swizzle on the multiply by the RCP results was wrong.
2010-06-24 15:05:20 -07:00
Eric Anholt
f30100c19c
ir_to_mesa: Fix copy'n'paste bug where divide multiplied left by 1/left.
...
Multiply left by 1/right, please.
2010-06-24 15:05:20 -07:00
Eric Anholt
3d70d1f4d6
ir_to_mesa: Emit more reduced writemasks for ops on small types.
...
This should help prevent Mesa from having to be smart to give
channel-wise drivers better information.
2010-06-24 15:05:19 -07:00
Eric Anholt
b07cc372c6
ir_to_mesa: Handle swizzles on LHS of assignment (writemasks).
2010-06-24 15:05:19 -07:00
Eric Anholt
12f654c63b
ir_to_mesa: Produce multiple scalar ops when required to produce vec4s.
...
Fixes the code emitted in a test shader for vec2 texcoord / vec2 tex_size.
2010-06-24 15:05:19 -07:00
Eric Anholt
b2ed4dd7b0
ir_to_mesa: Get temps allocated at the right times.
...
The alloced_vec4/vec4 distinction was an experiment to expose the cost
of temps to the codegen. But the problem is that the temporary
production rule gets called after the emit rule that was using the
temp. We could have the args to emit_op be pointers to where the temp
would get allocated later, but that seems overly hard while just
trying to bring this thing up. Besides, the temps used in expressions
bear only the vaguest relation to how many temps will be used after
register allocation.
2010-06-24 15:05:19 -07:00
Eric Anholt
ae252d3613
ir_to_mesa: Make the first temp index we use 1 to show off bugs.
...
Regs aren't allocated at the right times yet, so we see TEMP[0] a lot.
2010-06-24 15:05:19 -07:00
Eric Anholt
7aa0b034f7
ir_to_mesa: Fix up the assign rule to use left and right correctly.
...
The destination of assign is in left, not in the node itself.
2010-06-24 15:05:19 -07:00
Eric Anholt
f14913d4b7
ir_to_mesa: Do my best to explain how the codegen rules work.
2010-06-24 15:05:19 -07:00
Eric Anholt
b7abce770f
ir_to_mesa: Print out the ir along with the Mesa IR.
...
Ideally this would be hooked up by ir_print_visitor dumping into a
string that we could include as prog_instruction->Comment when in
debug mode, and not try keeping ir_instruction trees around after
conversion to Mesa. The ir_print_visitor isn't set up to do that for
us today.
2010-06-24 15:05:19 -07:00
Eric Anholt
3419583266
ir_to_mesa: Fix up src reg swizzling.
2010-06-24 15:05:19 -07:00
Eric Anholt
c554d7cede
ir_to_mesa: Remove dead code from when this was an ARB_fp printer.
2010-06-24 15:05:19 -07:00
Eric Anholt
8197eeee3b
ir_to_mesa: Fill in more bits of dest resg.
2010-06-24 15:05:19 -07:00
Eric Anholt
aaee40e107
ir_to_mesa: Print out the resulting program.
2010-06-24 15:05:19 -07:00
Eric Anholt
b5039eff3f
Add missing dist file.
2010-06-24 15:05:19 -07:00
Eric Anholt
182b623de3
Ignore the generated codegen files for now.
...
Later we'll throw them in revision control.
2010-06-24 15:05:19 -07:00
Eric Anholt
84771df82e
ir_to_mesa: Start building GLSL IR to Mesa IR conversion.
...
There are major missing pieces here. Most operations aren't
supported. Matrices need to be broken down to vector ops before we
get here. Scalar operations (RSQ, RCP) are handled incorrectly.
Arrays and structures are not even considered.
2010-06-24 15:05:19 -07:00
Eric Anholt
9290e0dd28
Make inlined function variables auto, not in/out.
2010-06-24 15:05:11 -07:00
Eric Anholt
ebefeb2bdd
Attach a pointer to variable names in LIR dumping.
...
Since variable names are not unique, and we like to make lots of
__retvals and assignment_tmps and a,b,c,d this helps in debugging.
2010-06-24 13:32:35 -07:00
Eric Anholt
9ca0a022e6
Quiet unused arg warning for ir_constant cloning.
2010-06-24 13:32:35 -07:00
Eric Anholt
5f38408833
Move ir_constant cloning alongside the other cloning functions.
2010-06-24 13:32:35 -07:00
Eric Anholt
ae805922b7
Don't forget to add the declaration of our temporary variable for assigns.
...
Otherwise, dead code elimination gets confused since it relies on
seeing decls.
2010-06-24 13:32:35 -07:00
Eric Anholt
f66ba4f357
ir_function_inlining: Re-add the "s/return/retval =/" functionality.
...
I ripped it out with the cloning changes yesterday, and should have
tested and noticed that there were now returns all over.
2010-06-24 13:32:35 -07:00
Eric Anholt
1b2bcf7913
Fix variable remapping in function cloning.
...
It's (ht, data, key) not (ht, key, data).
2010-06-24 13:32:35 -07:00
Carl Worth
4b2d32b5b5
ast_node: Remove empty destructor.
...
This wasn't serving any purpose. So delete it.
2010-06-23 16:16:32 -07:00
Carl Worth
c42e64099b
preprocessor: Initialize a potentially uninitialized variable.
...
My current reading of the relevant static functions suggests that last
is never used without being uninitialized, (we only use it if the
expansion function returned non-NULL and the expansion functions
always set it before returning non-NULL).
Apparently gcc isn't coming to the same conclusion. Initializing this
to NULL nicely quites gcc and will guarantee a nice, early segfault if
my anaylsis turns out to be wrong.
2010-06-23 16:13:31 -07:00
Carl Worth
726faddda2
preprocessor: Remove dead code _token_list_length
...
As gcc noticed, this function is not currently being used. Good-bye.
2010-06-23 16:13:31 -07:00
Carl Worth
45cbc08438
preprocessor: Remove dead code _string_list_append_list
...
As gcc noticed, this function is not currently being used. Good-bye.
2010-06-23 16:13:31 -07:00
Carl Worth
60c67e46b1
configure: Ensure that config.h can be safely included multiple times.
...
Use AH_TOP and AH_BOTTOM macros so that the standard include guard
mechanisms are emitted by autoheader into the generated config.h file.
2010-06-23 16:13:31 -07:00
Carl Worth
a32305a8bd
configure: Remove some dead code.
...
This block of code is useless because a (nearly-equivalent) assignment
is made immediately after. The only difference is the omission of
-Wunreadchable-code in the assignment being used. Presumably, that was
intended to be -Wunreachable-code (without the first 'd'), but since
this hasn't been being used we just drop it.
2010-06-23 16:13:31 -07:00
Carl Worth
a22426dc4c
Fix typos of "variable" as "varaible"
...
One of these was just in a comment. But ther other was in an enum
tag, (which is apparently not being used anywhere yet).
2010-06-23 16:12:53 -07:00
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