Commit Graph

36069 Commits

Author SHA1 Message Date
Eric Anholt f4869f3326 glsl2: Remove files that had been imported for standalone. 2010-06-24 17:14:00 -07:00
Eric Anholt e82ddb781a glsl2: Stop .gitignoring the old standalone build system. 2010-06-24 15:52:56 -07:00
Eric Anholt 9aa0b6d728 glsl2: Move the Mesa IR codegen into mesa/shader/ 2010-06-24 15:49:18 -07:00
Eric Anholt bcc13b7444 Merge branch 'glsl2-head' into glsl2
This brings in the standalone GLSL compiler that we are planning on
replacing the existing Mesa GLSL compiler.  It currently targets GLSL
1.20 and the Mesa IR.
2010-06-24 15:47:40 -07:00
Eric Anholt e5cf3aadb8 glsl2: Add a README file for the new compiler. 2010-06-24 15:46:53 -07:00
Eric Anholt 2928588267 glsl2: Move the compiler to the subdirectory it will live in in Mesa. 2010-06-24 15:36:00 -07:00
Eric Anholt 0ee7d80269 Merge branch 'mesa'
This brings in the ir_to_mesa.cpp code I've been developing to codegen
to the Mesa IR.  It does not actually generate a complete Mesa
fragment/vertex program yet.
2010-06-24 15:27:10 -07:00
Eric Anholt 6b01b50888 Move the talloc_parent lookup down in a few hot paths.
talloc_parent is still 80% of our runtime, but likely talloc_parent
lookups will be reduced as we improve the handling of memory
ownership.
2010-06-24 15:18:39 -07:00
Eric Anholt e33c10328c Merge remote branch 'cworth/master'
Conflicts:
	ast_to_hir.cpp
	ir.cpp

This brings in the talloc-based memory management work, so that the
compiler (almost) no longer leaks memory.
2010-06-24 15:13:03 -07:00
Eric Anholt 8364fc85b8 ir_to_mesa: Handle a limited subset of matrix multiplication.
glsl-mvp.vert now generates believable code, and mesa mode fails only
5 tests that master doesn't.  I must have left out some asserts...
2010-06-24 15:05:21 -07:00
Eric Anholt 7672064756 ir_to_mesa: Handle constant matrices.
There's not much to it since we're not actually storing constant data yet.
2010-06-24 15:05:21 -07:00
Eric Anholt f4bd7f262e ir_to_mesa: Fix copy-and-wasted second argument to compare expresssion ops.
Fixes CorrectParse2.vert assertion due to uninitialized values.
2010-06-24 15:05:21 -07:00
Eric Anholt 4006424f5b ir_to_mesa: Don't allocate temps for swizzles.
We do them in place by actually, you know, swizzling.
2010-06-24 15:05:21 -07:00
Eric Anholt a9b619bb3b ir_to_mesa: Set up storage for uniform vars. 2010-06-24 15:05:21 -07:00
Eric Anholt 554dbcce77 ir_to_mesa: Move the classes into the file now that we don't have the burg.
At 1kloc, it doesn't look like I'll want to split the ir_to_mesa file
up even once it's feature-complete.  Move definitions closer to usage,
and prevent rebuilding the world when changing the definitions.
2010-06-24 15:05:21 -07:00
Eric Anholt 2401338ef8 ir_to_mesa: Remove old monoburg structure. 2010-06-24 15:05:21 -07:00
Eric Anholt 9cd8cad9f3 ir_to_mesa: Restrict dst writemasks like we did in the monoburg setup. 2010-06-24 15:05:21 -07:00
Eric Anholt 9d2b8e0b70 ir_to_mesa: Fix copy-and-wasted DIV instruction sequence. 2010-06-24 15:05:21 -07:00
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