Eric Anholt
6de882334a
glsl2: Clean up vec_index_to_cond_assign after the clone return type change.
2010-07-07 09:07:52 -07:00
Eric Anholt
773025b92c
glsl2: Don't forget to walk the parameters to a function in the hv.
...
Fixes segfaults from use after free after the steal of ir nodes and
free of the compile context.
2010-07-07 09:07:52 -07:00
Eric Anholt
570dc0d400
glsl2: Avoid null deref in scalar constant unop expressions.
2010-07-07 09:07:52 -07:00
Eric Anholt
d4d630b72c
glsl2: Put the declaration in the instruction stream before its initializer.
...
This fixes a regression in the generated code from when I did the
ir_validate.cpp-driven rework of assignments.
2010-07-06 18:49:24 -07:00
Eric Anholt
a36334be02
glsl2: Add pass for supporting variable vector indexing in rvalues.
...
The Mesa IR needs this to support vector indexing correctly, and
hardware backends such as 915 would want this behavior as well.
Fixes glsl-vs-vec4-indexing-2.
2010-07-06 18:49:24 -07:00
Eric Anholt
2d1789e667
ir_to_mesa: Add support for conditional moves.
...
Nothing generates conditional moves yet.
2010-07-06 18:49:24 -07:00
Ian Romanick
ca088cc277
glsl2: Clone methods return the type of the thing being cloned
...
This is as opposed to returning the type of the base class of the hierarchy.
2010-07-06 17:44:37 -07:00
Kenneth Graunke
f14e596f11
ir_constant_expression: Declare loop counting variables in the loops.
...
Fixes "name lookup of 'c' changed" warning.
2010-07-06 17:43:56 -07:00
Kenneth Graunke
f2dfac6d74
glsl2: Update TODO.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
3f4a0b8bb0
ir_constant_expression: Add support for dot products.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
cf80a4d177
ir_constant_expression: Add support for matrix multiplication.
...
Also handles matrix/vector and vector/matrix multiplication.
Fixes piglit tests const-matrix-multiply-01.frag,
const-matrix-multiply-02.frag, and const-vec-mat.frag.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
37b3f9d0ed
ir_constant_expression: Support scalar * vector and scalar * matrix.
...
The test here is slightly different since we need to keep matrix
multiplication separate.
Fixes piglit tests const-vec-scalar-03.frag and const-mat-scalar-03.frag.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
dad35eb8b0
ir_constant_expression: Support scalar / vector and scalar / matrix.
...
Fixes piglit tests const-vec-scalar-04.frag and const-mat-scalar-04.frag.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
97b44f040a
ir_constant_expression: Support scalar - vector and scalar - matrix.
...
Fixes piglit tests const-vec-scalar-02.frag and const-mat-scalar-02.frag.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
e74dcd7924
ir_constant_expression: Support scalar + vector and scalar + matrix.
...
Fixes piglit tests const-vec-scalar-01.frag, const-vec-scalar-05.frag,
and const-mat-scalar-01.frag.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
6fc983b9bb
ir_constant_expression: Assert that both operands share a base type.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
6bc432e14e
ir_constant_expression: Initialize op[0] and op[1] to NULL.
...
This makes it easy to check if there is a second argument.
2010-07-06 16:03:33 -07:00
Kenneth Graunke
c63a1db81f
ir_constant_expression: Initialize all components of constant data to 0.
...
This is probably just a good idea, and will come in useful when
implementing things like matrix multiplication.
2010-07-06 16:03:32 -07:00
Ian Romanick
d1a1ee583e
Add hash table helper functions for using pointers as hash keys
2010-07-06 15:00:46 -07:00
Ian Romanick
e45a982313
Make hashtable.h be C++ friendly
2010-07-06 15:00:46 -07:00
Eric Anholt
a0b3b93029
ir_to_mesa: Use the compiler-assigned locations for builtin attrs/varyings.
...
The previous table didn't distinguish gl_Color for the VS and FS, so
we would use the FS's attribute index for the VS and read undefined.
This partially fixes glsl-routing to match its behavior on master.
2010-07-06 14:05:51 -07:00
Kenneth Graunke
83035574db
Refresh autogenerated file builtin_function.cpp.
2010-07-02 18:20:19 -07:00
Kenneth Graunke
7e908a6a27
glcpp: Add #error support.
2010-07-02 18:03:58 -07:00
Kenneth Graunke
2070f9f5be
glsl2: Fix for dead strings being stored in the symbol table.
2010-07-02 18:03:58 -07:00
Kenneth Graunke
e2a358348b
ir_to_mesa: Fix uninitalized value.
2010-07-02 18:03:58 -07:00
Kenneth Graunke
ddc3aa0783
glsl2/builtins: Use vector ops in the 130 version of "sign."
2010-07-02 18:03:58 -07:00
Kenneth Graunke
9a7ac272fb
glsl2/builtins: Use vector ops in "smoothstep."
2010-07-02 18:03:58 -07:00
Eric Anholt
b0ac07e3de
ir_to_mesa: Fix up implementation of ir_unop_exp.
...
OPCODE_EXP is not to ir_unop_exp what OPCODE_EX2 is to ir_unop_exp2.
It's the weird VP approximation helper opcode. Just implement it with
OPCODE_POW instead.
Fixes glsl-fs-exp.
2010-07-02 17:06:32 -07:00
Eric Anholt
4e7d5d0e74
i965: Add support for the DP2 opcode, which we use for dot(vec2, vec2).
...
The original glsl compiler would generate a.x * b.x + a.y * b.y, which
we would do mul+mul+add for instead of this mul+mac.
Fixes glsl-fs-dot-vec2.
2010-07-02 17:06:23 -07:00
Eric Anholt
8f25d198e5
ir_to_mesa: Add support for scalar * mat, vec * mat.
...
This is not tested by piglit currently.
2010-07-02 17:06:08 -07:00
Eric Anholt
b61f4241f3
ir_to_mesa: Add support for shadow comparison to texture instructions.
...
piglit lacks tests for this currently.
2010-07-02 17:06:06 -07:00
Eric Anholt
d3983ca032
ir_to_mesa: Move projection handling out of ir_tex so txb and txl get it.
...
Fixes:
glsl-fs-texture2dproj-bias
glsl-fs-texture2dproj-bias-2
2010-07-02 17:06:05 -07:00
Ian Romanick
4d962e66e3
glsl2: Print the linking info log in the stand-alone compiler
2010-07-02 14:57:07 -07:00
Eric Anholt
de75dfac4e
ir_to_mesa: Add support for projected non-shadow/bias/lod texturing.
...
Fixes:
glsl-fs-texture2dproj
glsl-fs-texture2dproj-2
2010-07-02 14:50:02 -07:00
Eric Anholt
cab95c228b
ir_to_mesa: Fix sparse swizzling of src regs when a writemask is present.
...
Fixes glsl-fs-texture2d-masked.
2010-07-02 14:08:20 -07:00
Eric Anholt
28faa12dc2
ir_to_mesa: Don't forget to run the Mesa IR optimization passes.
...
With how we generate assignments, the trivial copy propagation in it
is really important, and some drivers will really want the register
allocation, too.
2010-07-02 11:38:02 -07:00
Eric Anholt
9a0e421983
glsl2: Add a pass to break ir_binop_div to _mul and _rcp.
...
This results in constant folding of a constant divisor.
2010-07-02 11:27:06 -07:00
Ian Romanick
667f4e1940
glsl2: Conditionally allow optional extensions to be enabled
...
The only optional extension currently supported by the compiler is
GL_EXT_texture_array.
2010-07-01 20:40:08 -07:00
Ian Romanick
efb6b24223
glsl2: Append _TOK to some parser tokens
...
This prevents conflicts with defines elsewhere in Mesa and allows
including mtypes.h in the compiler.
2010-07-01 20:40:08 -07:00
Ian Romanick
06143ea094
glsl2: Conditionally define preprocessor tokens for optional extensions
...
The only optional extension currently supported by the compiler is
GL_EXT_texture_array.
2010-07-01 20:40:08 -07:00
Ian Romanick
2d12236117
glsl2: Define preprocessor tokens for extensions
...
Currently only GL_ARB_draw_buffers and GL_ARB_texture_rectangle are
defined because those extensions are always enabled. This make
tex_rect-03.frag pass.
2010-07-01 20:40:08 -07:00
Ian Romanick
6f0823da09
glsl2: Support AST-to-IR translation of invariant keyword
2010-07-01 20:39:08 -07:00
Ian Romanick
3832706f81
glsl2: Initialize ast_declarator_list::invariant in constructor
2010-07-01 17:10:11 -07:00
Ian Romanick
12873fa4e3
glsl2: Don't bounds check unsize array redeclarations
...
This along with several previous commits fix test CorrectUnsizedArray.frag.
2010-07-01 14:10:19 -07:00
Ian Romanick
127308b4be
glsl2: Add gl_MaxTextureCoords
2010-07-01 13:30:50 -07:00
Ian Romanick
cd00d5b88c
glsl2: Default delcaration of gl_TexCoord is unsized
2010-07-01 13:17:54 -07:00
Ian Romanick
5466b63968
glsl2: Change order of semaintic checks on variable declarations
...
This will make it easier to support more (valid) kinds of redeclarations.
2010-07-01 12:56:49 -07:00
Eric Anholt
411fb36b7c
ir_to_mesa: Fill in remaining ops, remove default case for expression types.
...
We should now have support for all the expression types we need for
GLSL 1.20.
2010-07-01 11:24:38 -07:00
Eric Anholt
8761fcc2bf
ir_to_mesa: Add support for ir_unop_rcp.
...
This isn't used at the moment, but will be soon.
2010-07-01 11:23:02 -07:00
Eric Anholt
d1b07167b9
glsl2: Update README for what I've been thinking about with expr types work.
2010-07-01 11:07:58 -07:00