Eric Anholt
0161515c39
ir_to_mesa: Remove the BURG code.
...
The promise of the BURG was to recognize multi-instruction sequences
and emit reduced sequences for them. It would have worked well for
recognizing MUL+ADD -> MAD and possibly even MIN(MAX(val, 0), 1) ->
MOV_SAT with some grammar changes. However, that potential benefit in
making those optimizations easy is outweighed by the fragility of
monoburg, the amount of (incorrect, as I wrote it) code for using it,
and the burden it was going to cause for handling operations on
aggregate types.
2010-06-24 15:05:21 -07:00
Eric Anholt
224f712950
ir_to_mesa: Fix mapping of FS texcoord inputs and color output.
2010-06-24 15:05:21 -07:00
Eric Anholt
ab386f18b0
ir_to_mesa: Try to fix up the dereference handling for the visitor rework.
...
One of the gstreamer shaders I play with now compiles, but input
mappings are wrong.
2010-06-24 15:05:21 -07:00
Eric Anholt
c23c6c773a
ir_to_mesa: Implement min and max expressions.
...
fixes glsl-orangebook-ch06-bump.frag.
2010-06-24 15:05:21 -07:00
Eric Anholt
346daeca07
ir_to_mesa: Don't assert over assignments with a constant-true condition.
2010-06-24 15:05:21 -07:00
Eric Anholt
c2014f03e8
ir_to_mesa: Add support for trunc/ceil/floor.
2010-06-24 15:05:20 -07:00
Eric Anholt
c45b615a37
ir_to_mesa: Implement neg expression.
2010-06-24 15:05:20 -07:00
Eric Anholt
3c5979565f
ir_to_mesa: Add sin/cos.
2010-06-24 15:05:20 -07:00
Eric Anholt
2c432637d0
ir_to_mesa: Start trying to support struct storage.
2010-06-24 15:05:20 -07:00
Eric Anholt
4a1bd916e7
ir_to_mesa: Fix up array indexing.
...
The grammar for array_reference_vec4_vec4 was set up wrong, so we
weren't generating instructions if necessary for the array index.
2010-06-24 15:05:20 -07:00
Eric Anholt
2ee85e20c8
ir_to_mesa: Remove stale comment about monoburg.
2010-06-24 15:05:20 -07:00
Eric Anholt
bdbd9f112e
ir_to_mesa: Add support for variable indexing of temporary arrays.
...
Fixes loop-01.vert, loop-02.vert.
2010-06-24 15:05:20 -07:00
Eric Anholt
4e5e0f018b
ir_to_mesa: Clean up some handling of builtins and arrays.
...
Constant-index dereferences of arrays should work now. One test is
regressed, but it should have been failing before this commit, too.
2010-06-24 15:05:20 -07:00
Eric Anholt
64fcbbca9c
ir_to_mesa: Add support for loops.
...
Fixes CorrectParse1 and the glsl2 loop tests that don't use arrays.
2010-06-24 15:05:20 -07:00
Eric Anholt
0c005bd773
Make loop jump mode public so I can switch on it.
2010-06-24 15:05:20 -07:00
Eric Anholt
4380099c98
ir_to_mesa: Add logic_or and logic_and to get CorrectFunction1.vert working.
2010-06-24 15:05:20 -07:00
Eric Anholt
763cd75863
ir_to_mesa: add logic_xor to get CorrectParse2.vert working.
2010-06-24 15:05:20 -07:00
Eric Anholt
1d20862c8a
ir_to_mesa: add logic_not and f2b to get CorrectParse2.frag working.
2010-06-24 15:05:20 -07:00
Eric Anholt
c5ca73e72c
ir_to_mesa: Add support for ir_if.
2010-06-24 15:05:20 -07:00
Eric Anholt
3831507957
ir_to_mesa: Add support for comparison operations.
2010-06-24 15:05:20 -07:00
Eric Anholt
bf99533350
ir_to_mesa: Introduce shorthand for common Mesa IR emit patterns.
2010-06-24 15:05:20 -07:00
Eric Anholt
423a75c5d6
ir_to_mesa: Add ir_unop_f2i -> OPCODE_TRUNC.
2010-06-24 15:05:20 -07:00
Eric Anholt
878740bedf
ir_to_mesa: Add codegen for rsq expression operation.
2010-06-24 15:05:20 -07:00
Eric Anholt
8c29a1d84d
ir_to_mesa: Add exp/log expression operations.
2010-06-24 15:05:20 -07:00
Eric Anholt
829e0a8eff
ir_to_mesa: Add (almost) the rest of the builtin varyings.
2010-06-24 15:05:20 -07:00
Eric Anholt
110d5cc83c
ir_to_mesa: Support gl_Position output.
2010-06-24 15:05:20 -07:00
Eric Anholt
8041bce333
ir_to_mesa: Support gl_FragData[] output.
2010-06-24 15:05:20 -07:00
Eric Anholt
48e282d8a2
ir_to_mesa: Support gl_FragData[] output.
2010-06-24 15:05:20 -07:00
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
Ian Romanick
84341f4b20
Make sure that symbols aren't multiply defined in the same scope.
...
The assembly parser is already checking this, but we're relying on the
symbol table handling it in glsl2.
2010-06-24 14:56:26 -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