Commit graph

661 commits

Author SHA1 Message Date
Vinson Lee
56176f00f5 glsl: Silence uninitialized variable warning.
i686-apple-darwin10-gcc-4.2.1 generated the following warning.
warning: 'score' may be used uninitialized in this function

GCC 4.4.3 on Linux didn't generate the above warning.
2010-08-21 20:42:47 -07:00
Vinson Lee
13b3d4c23d glsl: Silence unused variable warning.
The variable is actually used but only in the body of an assert.
2010-08-21 16:22:18 -07:00
Kenneth Graunke
e511a35fc5 glsl: Handle array declarations in function parameters.
The 'vec4[12] foo' style already worked, but the 'vec4 foo[12]' style
did not.  Also, 'vec4[] foo' was wrongly accepted.

Fixes piglit test cases array-19.vert and array-21.vert.

May fix fd.o bug #29684 (or at least part of it).
2010-08-21 15:42:27 -07:00
Vinson Lee
f7188ac9ce generate_builtins.py: Remove unused import sys. 2010-08-21 01:13:16 -07:00
Kenneth Graunke
7f80041efa Delete more vestiges of the old shader compiler. 2010-08-20 13:06:02 -07:00
Eric Anholt
284ce20901 Remove remnants of the old glsl compiler. 2010-08-20 10:55:42 -07:00
Kenneth Graunke
edd180f032 ast_to_hir: Reject function names that start with "gl_".
Fixes piglit test redeclaration-03.vert.
2010-08-20 02:46:05 -07:00
Kenneth Graunke
826a39cb14 ast_to_hir: Fix crash when a function shadows a variable.
The code would attempt to add a new signature to the ir_function, which
didn't exist.  Simply bailing out/returning early seems reasonable.

Fixes piglit test redeclaration-02.vert, and fixes a crash in
redeclaration-03.vert (the test still fails).
2010-08-20 02:46:05 -07:00
Kenneth Graunke
365ce61997 glsl: Replace sscanf in s_expression reader with strspn and strcspn.
This seems to give roughly a 20% speedup.
2010-08-18 21:33:18 -07:00
Eric Anholt
f1d5a94197 glsl: Also strdup the names of uniform list entries for >vec4 types.
Fixes double-free since the fix to free all of the uniform list.
2010-08-18 17:45:08 -07:00
Kenneth Graunke
bd7853768d glcpp: Refresh autogenerated lexer. 2010-08-18 17:38:47 -07:00
Kenneth Graunke
9cf62bdfeb glcpp: Add basic #line support (adapted from the main compiler). 2010-08-18 17:38:47 -07:00
Eric Anholt
b83846475b glsl2: Free the shader compiler at dri screen destruction.
Hooray, we can valgrind again without adding suppressions.  This also
adds an interface for use by an implementation of
glReleaseShaderCompiler().
2010-08-18 17:10:48 -07:00
Eric Anholt
4532feba14 glsl: Fix leak-causing typo in destructor that made it another constructor. 2010-08-18 16:18:38 -07:00
Vinson Lee
352e62c3c2 glsl: Fix uninitialized member in ir_hierarchical_vistor constructor.
Class member base_ir was not initialized by the default constructor.
2010-08-18 16:10:15 -07:00
Eric Anholt
e271384219 glsl: Garbage collect old prototype for ir_to_mesa. 2010-08-18 14:16:07 -07:00
Eric Anholt
5d0f430e8e mesa: Free old linked shaders when relinking new shaders. 2010-08-18 14:16:07 -07:00
Eric Anholt
0b09e6410f glsl2: Fix copy'n'paste hilarity leading to leaking in the refcount visitor. 2010-08-18 14:16:07 -07:00
Kenneth Graunke
665d75cc5a glsl: Fix scoping bug in if statements.
Fixes glslparsertest/glsl2/scoping-01.frag (successfully compiled but
should've failed) and scoping-02.frag (assertion triggered).
2010-08-18 14:03:25 -07:00
Kenneth Graunke
cf37ba3430 glsl: Refresh autogenerated file builtin_function.cpp. 2010-08-18 13:20:58 -07:00
Kenneth Graunke
011be6b594 generate_builtins.py: Clean up generated output a bit.
This should make it easier to diff the output, clean up some of the
insane whitespace, and make the strings a bit smaller.

We'll probably need to split up the prototype strings eventually, but
for now, this gets it under the 65K mark.
2010-08-18 13:20:41 -07:00
Kenneth Graunke
08a84c6a4a glsl/builtins: Add forgotten hyperbolic trig builtins in 1.30 profiles. 2010-08-18 13:16:50 -07:00
Kenneth Graunke
d12cb77d85 ir_constant_expression: Implement equal/notEqual for booleans.
Calls to equal(bvec, bvec) or notEqual(bvec, bvec) previously caused an
assertion.  Fixes piglit tests glsl-const-builtin-equal-bool and
glsl-const-builtin-notEqual-bool.
2010-08-18 12:08:19 -07:00
Kenneth Graunke
a57b1e579d glsl2: Regenerate builtin_function.cpp. 2010-08-17 23:50:40 -07:00
Kenneth Graunke
f70ce12529 glsl2: Fix cut and paste error in EXT_texture_array builtins.
Fixes fd.o bug #29629.
2010-08-17 23:50:15 -07:00
Carl Worth
9751b4ec60 glcpp: Refresh generated files.
After a recent change to glcpp-parse.y (adding "redefined macro" error).
2010-08-17 23:41:53 -07:00
Carl Worth
3882cf2169 glcpp: Add support for "redefined macro" error.
Carefully avoiding printing any error when the new definition matches
the existing definition.

This fixes the recently-added 088-redefine-macro-legitimate.c and
089-redefine-macro-error.c tests as well as glsparsertest/preprocess1
in piglit.
2010-08-17 23:41:53 -07:00
Carl Worth
105e2137d6 glcpp: Add two new tests for testing redefined macros.
The specification says that redefining a macro is an error, unless the
new definitions is identical to the old one, (identical replacement
lists but ignoring differing amounts of whitespace).
2010-08-17 23:41:53 -07:00
Carl Worth
97638aa77c glcpp: Allow standalone glcpp to accept a filename as first argument.
This is useful for debugging the preprocessor.
2010-08-17 23:41:53 -07:00
Carl Worth
ce5d0a296c glcpp: Fix 064-version.c expected result to track recent change.
In commit 6be3a8b70a, the #version directive
was fixed to stop generating a spurious newline. Here we simply update
the expected result for the single test which includes a #version directive.
2010-08-17 22:23:43 -07:00
Carl Worth
b9892f22d1 glcpp: Regenerated glcpp-lex.c from previous commit.
The previous commit changed glcpp-lex.l so we commit the resulting
generated file here.
2010-08-17 22:22:13 -07:00
Carl Worth
eb26f0d5b6 glcpp: Don't include the newline when discarding single-line comments
Matching the newline here meant having to do some redundant work here,
(incrementing line number, resetting column number, and returning a
NEWLINE token), that could otherwise simply be left to the existing rule
which matches a newline.

Worse, when the comment rule matches the newline as well, the parser
can lookahead and see a token for something that should actually be skipped.

For example, in a case like this:

	#if 0 // comment here
	fail
	#else
	win
	#endif

Both fail and win appear in the output, (not that the condition is being
evaluated incorrectly---merely that one token after the comment's newline
was being lexed/parse regardless of the condition).

This commit fixes the above test case, (which is also remarkably similar
to 087-if-comments which now passes).
2010-08-17 22:17:09 -07:00
Eric Anholt
ede67e3071 glcpp: Add testcase for #if handling bug that breaks Savage2. 2010-08-17 17:51:10 -07:00
Ian Romanick
bdc0e5285a glsl2: Fix transpose of rows and cols
This error led to an assertion failure for some constructors of
non-square matrices.  It only occured in matrices where the number of
columns was greater than the number of rows.  It didn't even always
occur on those.

Fixes piglit glslparsertest case constructor-16.vert.
2010-08-17 16:06:30 -07:00
Ian Romanick
40e114b5dc linker: Demote user-defined varyings in the VS-only case
Fixes piglit test case glsl-vs-ff-frag and bugzilla #29623.
2010-08-17 14:57:18 -07:00
Eric Anholt
0e6066df63 glsl: When doing algebraic simplification, make sure the type still matches.
When simplifying (vec4(1.0) / (float(x))) to rcp(float(x)), we forgot
to produce a vec4, angering ir_validate when starting alien-arena.

Fixes:
glsl-algebraic-add-zero-2
glsl-algebraic-div-one-2
glsl-algebraic-mul-one-2
glsl-algebraic-sub-zero-3
glsl-algebraic-rcp-sqrt-2
2010-08-17 13:50:45 -07:00
Eric Anholt
f166d94fac glsl: Make ir_algebraic new expressions allocate out of the parent.
This could reduce the amount of memory used by a shader tree after
optimization, and increases consistency with other passes.
2010-08-17 13:47:15 -07:00
Ian Romanick
664364052f ir_constant: Don't assert on out-of-bounds array accesses
Several optimization paths, including constant folding, can lead to
accessing an ir_constant array with an out of bounds index.  The GLSL
spec lets us produce "undefined" results, but it does not let us
crash.

Fixes piglit test case glsl-array-bounds-01 and glsl-array-bounds-03.
2010-08-17 13:00:03 -07:00
Ian Romanick
6c03c576cc Merge branch 'glsl2'
Conflicts:
	src/mesa/program/prog_optimize.c
2010-08-16 19:08:53 -07:00
Kenneth Graunke
a433cd286c glsl2: Refresh autogenerated file builtin_function.cpp. 2010-08-16 15:18:44 -07:00
Kenneth Graunke
2f9ecc818d glsl2: Add builtins profile for GLSL 1.30.
Many functions are currently wrapped with #if 0 since we haven't
implemented them yet.
2010-08-16 15:18:44 -07:00
Ian Romanick
45d97dd6d5 linker: Include compiler.h to avoid spurious warnings about INLINE 2010-08-16 13:59:34 -07:00
Ian Romanick
d0a9cbd20e glsl2: Silence unused variable warning 2010-08-16 13:59:01 -07:00
Kenneth Graunke
2e26145862 glcpp: Refresh autogenerated lexer and parser. 2010-08-16 13:43:43 -07:00
Kenneth Graunke
6be3a8b70a glcpp: Remove spurious newline generated by #version handling.
This was causing line numbering to be off by one.  The newline comes
from the NEWLINE token at the end of the line; there's no need to
insert one.
2010-08-16 13:43:35 -07:00
José Fonseca
9349379d1a Revert "glsl2: Use stdint.h instead of inttypes.h"
This reverts commit a77a6bc008.
2010-08-14 16:01:24 +01:00
José Fonseca
1cbcf6693a glsl: Standardize a few more uses of struct vs class keyword. 2010-08-14 15:35:57 +01:00
José Fonseca
4b1721eaf3 glsl: Silence gcc warning "control reaches end of non-void function". 2010-08-14 14:40:39 +01:00
José Fonseca
2322404b55 scons: Add new source files. 2010-08-14 12:45:14 +01:00
Vinson Lee
71a6dea0f5 glsl: Clean up header file inclusion. 2010-08-14 01:46:21 -07:00