summaryrefslogtreecommitdiffstats
path: root/src/glsl
Commit message (Collapse)AuthorAgeFilesLines
* glsl2: Add a pass to simplify if statements returning from both sides.Eric Anholt2010-07-073-0/+125
| | | | | | | | | | | | | | | This allows function inlining making the following tests work even without function calls implemented: glsl-fs-functions-2 glsl-fs-functions-3 glsl-vs-functions glsl-vs-functions-2 glsl-vs-functions-3 glsl-vs-vec4-indexing-5 (Note that those tests were designed to trigger actual function calls, and this defeats them. However, those testcases ended up catching the bug in the previous commit.)
* glsl2: Clean up vec_index_to_cond_assign after the clone return type change.Eric Anholt2010-07-071-2/+2
|
* glsl2: Don't forget to walk the parameters to a function in the hv.Eric Anholt2010-07-071-0/+4
| | | | | Fixes segfaults from use after free after the steal of ir nodes and free of the compile context.
* glsl2: Avoid null deref in scalar constant unop expressions.Eric Anholt2010-07-071-1/+6
|
* glsl2: Put the declaration in the instruction stream before its initializer.Eric Anholt2010-07-061-2/+2
| | | | | This fixes a regression in the generated code from when I did the ir_validate.cpp-driven rework of assignments.
* glsl2: Add pass for supporting variable vector indexing in rvalues.Eric Anholt2010-07-064-0/+200
| | | | | | | 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.
* glsl2: Clone methods return the type of the thing being clonedIan Romanick2010-07-065-41/+45
| | | | This is as opposed to returning the type of the base class of the hierarchy.
* ir_constant_expression: Declare loop counting variables in the loops.Kenneth Graunke2010-07-061-24/+23
| | | | Fixes "name lookup of 'c' changed" warning.
* glsl2: Update TODO.Kenneth Graunke2010-07-061-11/+3
|
* ir_constant_expression: Add support for dot products.Kenneth Graunke2010-07-061-0/+20
|
* ir_constant_expression: Add support for matrix multiplication.Kenneth Graunke2010-07-061-3/+25
| | | | | | | 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.
* ir_constant_expression: Support scalar * vector and scalar * matrix.Kenneth Graunke2010-07-061-7/+10
| | | | | | | 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.
* ir_constant_expression: Support scalar / vector and scalar / matrix.Kenneth Graunke2010-07-061-18/+18
| | | | Fixes piglit tests const-vec-scalar-04.frag and const-mat-scalar-04.frag.
* ir_constant_expression: Support scalar - vector and scalar - matrix.Kenneth Graunke2010-07-061-18/+18
| | | | Fixes piglit tests const-vec-scalar-02.frag and const-mat-scalar-02.frag.
* ir_constant_expression: Support scalar + vector and scalar + matrix.Kenneth Graunke2010-07-061-18/+28
| | | | | Fixes piglit tests const-vec-scalar-01.frag, const-vec-scalar-05.frag, and const-mat-scalar-01.frag.
* ir_constant_expression: Assert that both operands share a base type.Kenneth Graunke2010-07-061-0/+3
|
* ir_constant_expression: Initialize op[0] and op[1] to NULL.Kenneth Graunke2010-07-061-1/+1
| | | | This makes it easy to check if there is a second argument.
* ir_constant_expression: Initialize all components of constant data to 0.Kenneth Graunke2010-07-061-0/+2
| | | | | This is probably just a good idea, and will come in useful when implementing things like matrix multiplication.
* Add hash table helper functions for using pointers as hash keysIan Romanick2010-07-062-26/+3
|
* Refresh autogenerated file builtin_function.cpp.Kenneth Graunke2010-07-021-101/+18
|
* glcpp: Add #error support.Kenneth Graunke2010-07-021-0/+8
|
* glsl2: Fix for dead strings being stored in the symbol table.Kenneth Graunke2010-07-021-2/+2
|
* glsl2/builtins: Use vector ops in the 130 version of "sign."Kenneth Graunke2010-07-021-15/+3
|
* glsl2/builtins: Use vector ops in "smoothstep."Kenneth Graunke2010-07-021-86/+15
|
* glsl2: Print the linking info log in the stand-alone compilerIan Romanick2010-07-021-0/+3
|
* glsl2: Add a pass to break ir_binop_div to _mul and _rcp.Eric Anholt2010-07-023-0/+79
| | | | This results in constant folding of a constant divisor.
* glsl2: Conditionally allow optional extensions to be enabledIan Romanick2010-07-013-0/+10
| | | | | The only optional extension currently supported by the compiler is GL_EXT_texture_array.
* glsl2: Append _TOK to some parser tokensIan Romanick2010-07-012-7/+7
| | | | | This prevents conflicts with defines elsewhere in Mesa and allows including mtypes.h in the compiler.
* glsl2: Conditionally define preprocessor tokens for optional extensionsIan Romanick2010-07-016-11/+23
| | | | | The only optional extension currently supported by the compiler is GL_EXT_texture_array.
* glsl2: Define preprocessor tokens for extensionsIan Romanick2010-07-011-1/+17
| | | | | | 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.
* glsl2: Support AST-to-IR translation of invariant keywordIan Romanick2010-07-011-14/+70
|
* glsl2: Initialize ast_declarator_list::invariant in constructorIan Romanick2010-07-011-0/+1
|
* glsl2: Don't bounds check unsize array redeclarationsIan Romanick2010-07-011-1/+1
| | | | This along with several previous commits fix test CorrectUnsizedArray.frag.
* glsl2: Add gl_MaxTextureCoordsIan Romanick2010-07-014-22/+23
|
* glsl2: Default delcaration of gl_TexCoord is unsizedIan Romanick2010-07-012-11/+34
|
* glsl2: Change order of semaintic checks on variable declarationsIan Romanick2010-07-011-61/+61
| | | | This will make it easier to support more (valid) kinds of redeclarations.
* glsl2: Update README for what I've been thinking about with expr types work.Eric Anholt2010-07-011-1/+38
|
* glsl2: Add a pass to convert mod(a, b) to b * fract(a/b).Eric Anholt2010-07-017-7/+117
| | | | This is used by the Mesa IR backend to implement mod, fixing glsl-fs-mod.
* glsl2: Remove dead member from dead code visitor.Eric Anholt2010-07-011-1/+0
|
* glsl2: Add ir_unop_fract as an expression type.Eric Anholt2010-07-015-8/+29
| | | | | Most backends will prefer seeing this to seeing (a - floor(a)), so represent it explicitly.
* glsl2: Don't break sign() down by vector components.Eric Anholt2010-06-302-32/+6
|
* glsl2: Fix reversed value of step().Eric Anholt2010-06-302-38/+38
| | | | It's 0.0 if x < edge, not 1.0. Partial fix for glsl-fs-step.
* glsl2: Fix up the implementation of fract() for vector types.Eric Anholt2010-06-302-30/+6
| | | | There's no need to split each vector component out, just do vector ops.
* glsl2: Implement AST->HIR support for the "discard" instruction.Kenneth Graunke2010-06-301-1/+1
|
* glsl2: Define new ir_discard instruction.Kenneth Graunke2010-06-3010-0/+107
|
* glsl2: Allow a fragment shader to not write a color.Eric Anholt2010-06-301-6/+0
| | | | | | I can't find any text justifying this check, and it caused a reasonable-looking shader in glsl-bug-22603 (which writes only gl_FragDepth) to fail.
* glsl2: Fix storing of dead memory in the symbol table.Kenneth Graunke2010-06-301-2/+2
| | | | | decl->identifier is part of the AST, so it doesn't live very long. Instead, add var->name which is owned by var.
* glsl2: Preprocessed source doesn't need to live past compile time.Kenneth Graunke2010-06-301-4/+1
|
* glsl2: Create new talloc contexts the "right" way.Kenneth Graunke2010-06-302-2/+2
|
* glsl2: Use _mesa_glsl_parse_state as the talloc parent, not glsl_shader.Kenneth Graunke2010-06-306-120/+120
| | | | | | | | | | | | | _mesa_glsl_parse_state should be the parent for all temporary allocation done while compiling a shader. glsl_shader should only be used as the parent for the shader's final IR---the _result_ of compilation. Since many IR instructions may be added or discarded during optimization passes, IR should not ever be allocated to glsl_shader directly. Done via sed -i s/talloc_parent(state)/state/g and s/talloc_parent(st)/st/g. This also removes a ton of talloc_parent calls, which may help performance.