Age | Commit message (Collapse) | Author |
|
|
|
|
|
The code for handling implicit conversions should probably get
refactored, but for now, this is easy.
Fixes piglit test constructor-26.vert.
|
|
I'm not sure if this is strictly necessary, but it seems wise.
|
|
Fixes piglit test constructor-27.vert.
|
|
return_constructors
Now that constructors are not generated as functions or stored in the
symbol table, there is no need to flag whether or not constructors
should be returned.
|
|
|
|
|
|
|
|
Fixes piglit test cases glsl-[fv]s-all-0[12].
|
|
If the matrix being constructed was larger than the source matrix, it
would overwrite the lower-right part of the matrix with the wrong
values, rather than leaving it as the identity matrix.
For example, constructing a mat4 from a mat2 should only use a writemask
of "xy" when copying from the source, but was using "xyzw".
Fixes the code generated by piglit test constructor-23.vert.
|
|
Fixes piglit test case constructor-21.vert and changes
constructor-22.vert to give the correct output.
|
|
|
|
This was triggering even for matrix-from-matrix constructors. It is
perfectly legal to construct a mat3 from a mat2 - the rest will be
filled in by the identity matrix.
Changes piglit test constructor-23.vert from FAIL to PASS, but the
generated code is incorrect.
|
|
There are no integer matrix types, so switching on them is silly.
|
|
|
|
Reduces glsl-vs-all-01 from 42 Mesa IR instructions (including the
END) to 17.
|
|
|
|
The GLSL 1.20 spec specifically disallows this, but it was allowed in
GLSL 1.10.
Fixes piglit test cases local-function-0[13].frag and bugzilla #29921.
|
|
When x==0, the result was wrong. Fixes piglit glsl-fs-atan-1.shader_test
|
|
Make two passes over the constructor parameters. Write all of the
constants in a single write, then write the non-constants one at a
time. This causes the fragment shader
varying float g;
void main()
{
gl_FragColor = vec4(0.0, g, 0.0, 1.0);
}
to generate
(function main
(signature void (parameters )
(
(declare (temporary ) vec4 vec_ctor@0x8580058)
(assign (constant bool (1)) (xzw) (var_ref vec_ctor@0x8580058) (constant vec4 (0.000000 0.000000 0.000000 1.000000)) )
(assign (constant bool (1)) (y) (var_ref vec_ctor@0x8580058) (swiz xxxx (var_ref g@0x8580218) ))
(assign (constant bool (1)) (xyzw) (var_ref gl_FragColor@0x84d32a0) (var_ref vec_ctor@0x8580058) )
))
)
instead of
(function main
(signature void (parameters )
(
(declare (temporary ) vec4 vec_ctor@0x8580058)
(assign (constant bool (1)) (x) (var_ref vec_ctor@0x8580058) (constant vec4 (0.000000 0.000000 0.000000 1.000000)) )
(assign (constant bool (1)) (y) (var_ref vec_ctor@0x8580058) (swiz xxxx (var_ref g@0x8580218) ))
(assign (constant bool (1)) (z) (var_ref vec_ctor@0x8580058) (constant vec4 (0.000000 0.000000 0.000000 1.000000)) )
(assign (constant bool (1)) (w) (var_ref vec_ctor@0x8580058) (constant vec4 (0.000000 0.000000 0.000000 1.000000)) )
(assign (constant bool (1)) (xyzw) (var_ref gl_FragColor@0x84d32a0) (var_ref vec_ctor@0x8580058) )
))
)
A similar optimization could be done for matrix constructors, but it
is a little more complicate there.
|
|
Previously, using bit-wise operators in some larger expression would
crash on a NULL pointer dereference. This code at least doesn't crash.
Fixes piglit test bitwise-01.frag.
|
|
Fixes piglit test glsl-override-builtin. The linker incorrectly found
the prototype for the float signature, rather than adding a new
prototype with the int return type. This caused ir_calls with type int
to have their callees set to the float signature, triggering an assert.
|
|
Fixes piglit test case glsl-array-varying-01.
|
|
When releasing the builtin functions, we were just freeing the memory,
not telling the builtin function loader that we had freed its memory.
I wish I had done ARB_ES2_compatibility so we had regression testing
of this path. Fixes segfault on changing video options in nexuiz.
|
|
|
|
All pragmas are currently ignored. Also, the error messages when a
pragma is used incorrectly (i.e., '#pragma debug(on)' inside a
function) are crap, but I think this is sufficient for now.
Fixes piglit test cases pragma-0[1-8].(vert|frag).
|
|
|
|
If two shaders contain variables declared with array types that have
the same base type but one is sized and the other is not, linking
should succeed. I'm not super pleased with the way this is
implemented, and I am more convinced than ever that we need more
linker tests. We especially need "negative" tests.
Fixes bugzilla #29697 and piglit test glsl-link-array-01.
|
|
Completely initialize data that is passed to ir_constant constructor.
Fixes piglit glsl-orangebook-ch06-bump valgrind uninitialized variable
error on softpipe and llvmpipe.
|
|
The
ir_constant::ir_constant(const struct glsl_type *type, exec_list *value_list)
did not completely initialize the entire value member.
Fixes piglit glsl-fs-sampler-numbering-2 valgrind uninitialized value
error in softpipe and llvmpipe.
|
|
Complete initialize data passed to ir_constant constructor.
Fixes piglit glsl-mat-from-int-ctor-02 valgrind unintialized variable
error with softpipe and llvmpipe.
|
|
Completely initialize data that is passed into a ir_constant constructor.
Fixes piglit glsl-fs-mix valgrind uninitialized variable error on
softpipe and llvmpipe.
|
|
Fixes valgrind uninitialized value errors in the piglit shader tests for
softpipe and llvmpipe.
|
|
|
|
It was easy while typing implementations to accidentally overwrite the
original expression or assignment variables.
|
|
This will reduce memory consumption of compiled shaders by not
dragging optimized-out children around.
|
|
|
|
DRI was doing teardown when we close the last screen, then an atexit()
was added to call it as well.
|
|
As it was, the header could not be cleanly #included by a C source.
|
|
|
|
Reduces runtime of glsl-max-varyings 92% on my system.
|
|
|
|
|
|
Per the GLSL 1.20 specification (presumably a clarification of 1.10).
Also, when creating user functions, make a new ir_function that shadows the
built-in ir_function, rather than adding new signatures. User functions
are supposed to hide built-ins, not overload them.
Fixes piglit tests redeclaration-{04, 12, 14}.vert.
|
|
Also rename it to "is_builtin" for consistency.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
|
|
Moving the check for an earlier variable declaration helps cleanly
separate out the re-declaration vs. new declaration code a bit. With
that in place, conflicts between variable names and structure types or
function names aren't caught by the earlier "redeclaration" error
message, so check the return type on glsl_symbol_table::add_variable
and issue an error there. If one occurs, don't emit the initializer.
Fixes redeclaration-01.vert and redeclaration-09.vert.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
|
|
Instead, make a new ir_function and try to add it to the symbol table.
Fixes piglit test redeclaration-08.vert.
|
|
Instead, rely on the symbol table's rules.
Fixes redeclaration-02.vert.
|
|
As of 1.20, variable names, function names, and structure type names all
share a single namespace, and should conflict with one another in the
same scope, or hide each other in nested scopes.
However, in 1.10, variables and functions can share the same name in the
same scope. Structure types, however, conflict with/hide both.
Fixes piglit tests redeclaration-06.vert, redeclaration-11.vert,
redeclaration-19.vert, and struct-05.vert.
|