Age | Commit message (Collapse) | Author |
|
Previously, the compiler expected the result of the multiplication to
be of the same type as the vector. This is correct for square
matrices, but wrong for all others.
We fix this by instead expecting a vector with the same number of rows
as the matrix (for the case of M*v with a column vector) or the same
number of columns as the matrix (for v*M with a row vector).
This fix causes the following four glean tests to now pass:
glsl1-mat4x2 * vec4
glsl1-vec2 * mat4x2 multiply
glsl1-vec3 * mat4x3 multiply
glsl1-vec4 * mat3x4 multiply
|
|
Fixes:
glsl1-for-loop with continue
Bug #29097
|
|
Implicit conversions were not being performed, nor was there any
type checking - it was possible to have, say, var->type == float
and var->constant_value->type == int. Later use of the constant
expression would trigger an assertion.
Fixes piglit test const-implicit-conversion.frag.
|
|
Previously, any occurence of the unary plus operator would trigger a
bogus type mismatch error. Fix this by making the ast_plus case look
more like the ast_neg case as far as type-checking is concerned.
With this change the shaders/CorrectPreprocess8.frag test in piglit
now passes.
|
|
|
|
This is quite a large patch because breaking it into smaller pieces
would result in the tree being intermitently broken. The big changes
are:
* Add the ir_var_temporary variable mode
* Change the ir_variable constructor to take the mode as a
parameter and correctly specify the mode for all ir_varables.
* Change the linker to not cross validate ir_var_temporary
variables.
* Change the linker to pull all ir_var_temporary variables from
global scope into 'main'.
|
|
Since the types are singletons across the lifetime of the compiler,
repeatedly compiling a program with the same structure type defined
would drop a copy of the array on the floor per compile.
This is a bit tricky because the static GLSL types are not called with
the talloc-based new, so we have to use the global type context, which
may not be initialized yet.
|
|
Fixes piglit test unsized-array-non-const-index.vert.
|
|
|
|
Temporary variables added for &&, ||, and ?: were not being added to
the instruction stream. This resulted in either test failures or
Valgrind being angry after the original IR tree was destroyed by
talloc_free. The talloc_free caused the ir_variables to be destroyed
even though they were still referenced.
|
|
Most places in the code simply use a static name, which works because
names are never used to look up an ir_variable. generate_temporary is
simply unnecessary (and looks like it would leak memory, and isn't
thread safe...)
|
|
|
|
|
|
initializer."
This change causes segfaults in other tests. A fix for both sets of
segfaults is coming.
This reverts commit d4d630b72c7b7f38074addda0f1b819608247d93.
|
|
This fixes a regression in the generated code from when I did the
ir_validate.cpp-driven rework of assignments.
|
|
This is as opposed to returning the type of the base class of the hierarchy.
|
|
|
|
This along with several previous commits fix test CorrectUnsizedArray.frag.
|
|
|
|
|
|
This will make it easier to support more (valid) kinds of redeclarations.
|
|
|
|
decl->identifier is part of the AST, so it doesn't live very long.
Instead, add var->name which is owned by var.
|
|
_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.
|
|
Fixes piglit test glsl-implicit-conversion-01.
|
|
|
|
All scalar, vector, and matrix constructors are generated in-line
during AST-to-HIR translation. There is no longer any need to
generate function versions of the constructors.
|
|
This doesn't do any control flow analysis to ensure that the return
statements are actually reached.
Fixes piglit tests function5.frag and function-07.vert.
|
|
Fixes piglit test return-qualifier.frag.
|
|
From my reading of the specification, implicit conversions are not
allowed. ATI seems to agree, though nVidia allows it without warning.
|
|
|