| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Top-level instructions now get NULL as their default type (since type is
irrelevant for things like ir_function), while ir_rvalues get error_type
by default.
This should make it easier to tell if we've forgotten to set a type. It
also fixes some "Conditional jump or move depends on uninitialized
value" errors in valgrind caused by ir_validate examining the type of
top level ir_instructions, which weren't set.
|
|
|
|
|
|
| |
Assignments can only exist at the top level instruction stream; the
residual value is handled by assigning the value to a temporary and
returning an ir_dereference_variable of that temporary.
|
|
|
|
|
| |
ir_to_mesa was updated for the _mesa_glsl_parse_state constructor
changes, but main.cpp was not.
|
|
|
|
|
|
| |
Variables with mode ir_var_temporary were causing an out of bounds array
access and filling my screen with rubbish. I'm not sure if "temporary"
is the right thing to print.
|
|
|
|
|
|
|
|
|
|
|
| |
It's really hard to believe that this case has been broken, but apparently
no test previously exercised it. So this commit adds such a test and fixes
it by making a copy of the argument token-list before expanding it.
This fix causes the following glean tests to now pass:
glsl1-Preprocessor test 6 (#if 0, #define macro)
glsl1-Preprocessor test 7 (multi-line #define)
|
|
|
|
|
|
|
|
| |
Kind of missing the point to only do the side effects if the LHS
evaluates as true.
Fixes:
glsl1-|| operator, short-circuit
|
| |
|
|
|
|
|
|
|
|
| |
Fixes:
glsl1-struct (1)
glsl1-struct (2)
glsl1-struct (3)
glsl1-struct (4)
|
| |
|
| |
|
|
|
|
|
|
|
| |
Fixes:
draw_buffers-08.frag
draw_buffers-09.frag
glsl-vs-texturematrix-2
|
|
|
|
|
|
|
|
|
|
|
|
| |
If we put the protos in separate ir_functions, they wouldn't be found
at lookup time for linking.
Fixes:
glsl-fs-texture2d-bias
glsl-fs-texture2dproj-bias
glsl-fs-texture2dproj-bias-2
glsl-lod-bias
glsl1-texture2D(), computed coordinate
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Previously, we'd constant-fold up a value of vec4(1.0 - arg2, 0, 0, 0).
Fixes:
glsl1-mix(vec4) function
|
|
|
|
|
| |
Instead, just use the incoming sampler param. Fixes many texture-using
piglit tests since the linker rework.
|
|
|
|
|
|
|
| |
Fixes:
glsl1-for-loop with continue
Bug #29097
|
| |
|
|
|
|
|
| |
Chances are, if one fragment looped badly, others will too, and
debugging output gets overwhelmed by the looping complaints.
|
| |
|
|
|
|
| |
Fixes a segfault in Regnum Online.
|
| |
|
|
|
|
|
| |
Piglit parser tests const-array-03.frag and const-array-04.frag now
generate the correct code.
|
|
|
|
| |
Fixes piglit test const-array-02.frag.
|
| |
|
| |
|
|
|
|
| |
The IR reader does not expect commas.
|
|
|
|
|
|
|
|
|
| |
Since GLSL permits arrays of structures, we need to store each element
as an ir_constant*, not just ir_constant_data.
Fixes parser tests const-array-01.frag, const-array-03.frag,
const-array-04.frag, const-array-05.frag, though 03 and 04 generate the
wrong code.
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Also make ir_unop_i2f only operate on signed integers.
|
|
|
|
| |
The ir_constant::has_value method already does this.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This is an invasive set of changes. Each user shader tracks a set of other
shaders that contain built-in functions. During compilation, function
prototypes are imported from these shaders. During linking, the
shaders are linked with these built-in-function shaders just like with
any other shader.
|
| |
|
|
|
|
| |
To quiet a compiler warning.
|
|
|
|
|
|
|
|
|
|
|
|
| |
In both the preprocessor and in the compiler proper, we use a custom
yyltype struct to allow tracking the source-string number in addition
to line and column. However, we were previously relying on bison's
default initialization of the yyltype struct which of course is not
aware of the source field and leaves it uninitialized.
We fix this by defining our own YYLLOC_DEFAULT macro expanding on the
default version (as appears in the bison manual) and adding
initialization of yylloc.source.
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
The lowering code should probably be moved elsewhere.
|
| |
|
|
|
|
| |
Coming changes to the handling of built-in functions necessitate this.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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'.
|
|
|
|
| |
This caught the failure in cloning of ir_dereference_record.
|
|
|
|
|
| |
We're good at propagating error types around, but finding when the
first one was triggered can be painful if we aren't paying attention.
|
|
|
|
|
| |
Otherwise, after linking and freeing the old data, the pointer would
dangle. Partial fix for glsl1-struct*.
|