| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
We would clear the in_lhs flag early, avoiding copy propagation on the
array index variable (oops) and then copy propagating on the array
variable (ouch). Just avoid all copy propagation on the LHS instead.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Add two invariant checks related to functions and function signatures:
1. Ensure that function definitions (ir_function) are not nested.
2. Ensure that the ir_function pointed to by an ir_function_signature
is the one that contains it in its signatures list.
|
|
|
|
|
|
|
|
|
| |
There is no setter function, the getter returns a constant pointer,
and ir_function_signature::_function is private for a reason. The
only way to make a connection between a function and function
signature is via ir_function::add_signature. This helps ensure that
certain invariants (i.e., a function signature is in the list of
signatures for its _function) are met.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Fixes glsl-fs-uniform-array-1, glsl-vs-uniform-array-1, and the -2
tests on software.
|
|
|
|
|
|
|
| |
This will be used by the Mesa IR and likely most HW backends, as it
allows other optimizations to occur that might not otherwise.
Fixes glsl-vs-mat-sub-1, glsl-vs-mat-div-1.
|
|
|
|
|
|
|
| |
This feels a little odd, but it will be useful for ir_mat_to_vec,
where I want to see a plain assignment of the expression to a
variable, not to a writemasked array dereference with a call as the
array index.
|
|
|
|
|
|
|
| |
It would be easy to miss an entry either of the two visitors involved
that would result in trying to ir->remove() the call to remove it from
the instruction stream when really it's part of an expression tree
that wasn't flattened.
|
|
|
|
|
|
|
|
|
|
| |
Previously, code like ivec4(mat2(...)) would fail because the compiler
would naively try to convert a mat2 to an imat2...which doesn't exist.
Now, a separate pass breaks such matrices down to their columns, which
can be converted from vec2 to ivec2.
Fixes piglit tests constructor-11.vert, constructor-14.vert,
constructor-15.vert, and CorrectConstFolding2.frag.
|
|
|
|
| |
This has no functional changes.
|
|
|
|
|
| |
This case is already caught by a later check that ensures sufficient
components were provided, based on the type.
|
| |
|
|
|
|
|
|
|
|
| |
In particular, with foreach_list_safe, one can remove and free the current
node without crashes; if new nodes are added after the current node,
they will be properly visited as well.
Signed-off-by: Ian Romanick <[email protected]>
|
|
|
|
|
|
|
| |
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...)
|
|
|
|
| |
Fixes glsl-fs-pointcoord on swrast (remains broken on 965, like master)
|
| |
|
|
|
|
|
|
| |
Uses of the bits for allocation are offset by 16, and
VERT_BIT_GENERIC0 already has the 16 offset. As a result, it was
preventing the wrong thing from being allocated.
|
|
|
|
| |
caught by valgrind.
|
|
|
|
|
|
| |
rcp of an integer value did not produce the result you're looking for.
Instead, do the a * rcp(b) as float and truncate after. This mostly
fixes glsl-fs-loop-nested.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
initializer."
This change causes segfaults in other tests. A fix for both sets of
segfaults is coming.
This reverts commit d4d630b72c7b7f38074addda0f1b819608247d93.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.)
|
| |
|
|
|
|
|
| |
Fixes segfaults from use after free after the steal of ir nodes and
free of the compile context.
|
| |
|
|
|
|
|
| |
This fixes a regression in the generated code from when I did the
ir_validate.cpp-driven rework of assignments.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This is as opposed to returning the type of the base class of the hierarchy.
|
|
|
|
| |
Fixes "name lookup of 'c' changed" warning.
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Fixes piglit tests const-vec-scalar-04.frag and const-mat-scalar-04.frag.
|
|
|
|
| |
Fixes piglit tests const-vec-scalar-02.frag and const-mat-scalar-02.frag.
|
|
|
|
|
| |
Fixes piglit tests const-vec-scalar-01.frag, const-vec-scalar-05.frag,
and const-mat-scalar-01.frag.
|
| |
|
|
|
|
| |
This makes it easy to check if there is a second argument.
|