Commit graph

1196 commits

Author SHA1 Message Date
Ian Romanick
89d81ab16c glsl: Calcluate Mesa state slots in front-end instead of back-end
This should be the last bit of infrastructure changes before
generating GLSL IR for assembly shaders.

This commit leaves some odd code formatting in ir_to_mesa and brw_fs.
This was done to minimize whitespace changes / reindentation in some
loops.  The following commit will restore formatting sanity.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Chad Versace <chad.versace@intel.com>
2011-03-29 13:21:08 -07:00
Ian Romanick
92e412e788 glsl: Move _mesa_builtin_uniform_desc from uniforms.c to ir_variable.cpp
This array is going to be used in the main compiler soon.  Leaving
them uniforms.c caused problems for building the stand-alone compiler.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Chad Versace <chad.versace@intel.com>
2011-03-29 13:21:08 -07:00
Kenneth Graunke
8752824f27 glsl: Accept precision qualifiers on sampler types, but only in ES.
GLSL 1.30 states clearly that only float and int are allowed, while the
GLSL ES specification's issues section states that sampler types may
take precision qualifiers.

Fixes compilation failures in 3DMarkMobileES 2.0 and GLBenchmark 2.0.

NOTE: This is a candidate for stable release branches.
2011-03-26 23:56:18 -07:00
Kenneth Graunke
56ef62d988 glsl: Generate readable unique names at print time.
Since GLSL IR allows multiple ir_variables to share the same name, we
need to generate unique names when printing the IR.  Previously, we
always used %s@%p, appending the ir_variable's memory address.

While this worked, it had two drawbacks:
- When there aren't duplicates, the extra "@0x669a3e88" is useless
  and makes the code harder to read.
- Real duplicates were hard to tell apart:
  channel_expressions@0x6699e3c8 vs. channel_expressions@0x6699ddd8

We now append @2, @3, @4, and so on, but only where necessary to
distinguish duplicates.  Since we only do this at print time, any
performance impact is irrelevant.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
2011-03-25 16:31:53 -07:00
Ian Romanick
dfdff940b6 glsl: Make add_variable, add_uniform, et. al. have similar signatures
While making some other changes in this area I was finding it annoying
each of these functions took mostly the same set of parameters in
differing orders.
2011-03-25 11:28:08 -07:00
Ian Romanick
0d9d036004 glsl: Fix off-by-one error setting max_array_access for non-constant indexing
NOTE: This is a candidate for the stable branches.
2011-03-25 11:28:07 -07:00
Ian Romanick
bc83f6bd58 glsl: Add array access bounds checking to ir_validate 2011-03-25 11:28:07 -07:00
José Fonseca
28f1d6ab49 glsl: Add void to _mesa_destroy_shader_compiler() argument list.
At least MSVC sees a distinction between foo() and foo(void) and warns
about it.
2011-03-25 16:22:34 +00:00
Tobias Droste
f3a828c21f autoconf: don't use CFLAGS for cpp files
Signed-off-by: Tobias Droste <tdroste@gmx.de>
2011-03-16 13:54:50 -07:00
José Fonseca
6b3713f8b8 glsl2: Silence unused added variable gcc warning. 2011-03-16 09:16:01 +00:00
Brian Paul
d350ef1682 glsl: add cast to silence signed/unsigned comparison warning 2011-03-15 18:21:35 -06:00
Ian Romanick
85caea29c1 glsl: Only allow unsized array assignment in an initializer
It should have been a tip when the spec says "However, implicitly
sized arrays cannot be assigned to. Note, this is a rare case that
*initializers and assignments appear to have different semantics*."
(empahsis mine)

Fixes bugzilla #34367.

NOTE: This is a candidate for stable release branches.
2011-03-15 16:41:23 -07:00
Eric Anholt
c75427f4c8 glsl: Skip processing the first function's body in do_dead_functions().
It can't call anything, so there's no point.
2011-03-15 10:14:51 -07:00
Eric Anholt
11af045ea8 glsl: Whitespace fixup in opt_dead_functions.cpp. 2011-03-15 10:14:51 -07:00
Eric Anholt
2b13e13594 glsl: Skip processing of expression trees in discard simplification.
It only cares about "if", "loop", and "discard".
2011-03-15 09:49:01 -07:00
Eric Anholt
05cf1ad82e glsl: Reduce processing of expression trees in do_structure_splitting.
Most of the time we don't have a non-uniform struct variable in the
shader, so this cuts the time spent in do_structure_splitting during
glean texCombine by about 2/3.
2011-03-15 09:49:01 -07:00
Eric Anholt
991fa4d3d0 glsl: Skip processing expression trees in do_if_simplification().
Reduces time spent in this during glean texCombine by about 2/3.
2011-03-15 09:49:00 -07:00
Eric Anholt
d3a444af2d glsl: Skip processing expression trees in optimize_redundant_jumps()
Cuts the time spent in this function during glean texCombine by 2/3.
2011-03-15 09:49:00 -07:00
Jose Fonseca
a946e84071 scons: copy hash_table.c, symbol_table.c to glsl directory
This fixes an issue where the .obj files wound up in the src/
directory rather than the build/ directory.  That prevented
combined 32-bit and 64-bit builds from working.

Signed-off-by: Brian Paul <brianp@vmware.com>
2011-03-15 15:32:00 +00:00
Kenneth Graunke
233b88eab9 glsl: Explicitly specify a type when reading/printing ir_texture.
This is necessary for GLSL 1.30+ shadow sampling functions, which return
a single float rather than splatting the value to a vec4 based on
GL_DEPTH_TEXTURE_MODE.
2011-03-14 13:03:50 -07:00
Kenneth Graunke
cb3317b85a texture_builtins.py: Add support for 130-style Shadow sampler variants. 2011-03-14 13:03:50 -07:00
Chad Versace
dedc81e1dc glsl: Document glsl_type::sampler_dimensionality 2011-03-12 17:39:48 -08:00
Eric Anholt
29e013e58b mesa: Add gl_MESAFogParamsOptimized for our special pre-computed fog params.
It would be nice if we handled optimized uniform math like this in
some generic way, since people often end up doing uniform expressions
in shaders, but for now keep this hard-coded like it was in the
texenvprogram code.
2011-03-11 12:55:14 -08:00
Eric Anholt
20f7a6f11a mesa: Add a builtin uniform for the ATI_envmap_bumpmap rotation matrix.
For fixed function fragment processing in GLSL IR, we want to be able
to reference this state value.  gl_* not explicitly permitted is
reserved, so using this variable name internally shouldn't be any
issue.
2011-03-11 12:55:14 -08:00
Brian Paul
0eab3a8a97 glsl: silence warning in printf() with a cast 2011-03-10 09:29:00 -07:00
Ian Romanick
bdb6a6ef83 glsl: Use insert_before for lists instead of open coding it 2011-03-08 11:47:25 -08:00
Ian Romanick
60f898a90e linker: Add imported functions to the linked IR
Fixes piglit test glsl-function-chain16 and bugzilla #34203.

NOTE: This is a candidate for stable release branches.
2011-03-08 11:47:25 -08:00
Ian Romanick
8bbfbb14ee glsl: Add several function / call related validations
The signature list in a function must contain only ir_function_signature nodes.

The target of an ir_call must be an ir_function_signature.

These were added while trying to debug Mesa bugzilla #34203.
2011-03-08 11:47:25 -08:00
Ian Romanick
2df56b002d glsl: Function signatures cannot have NULL return type
The return type can be void, and this is the case where a `_ret_val'
variable should not be declared.
2011-03-08 11:47:25 -08:00
Ian Romanick
09a4ba0fc3 glsl: Process redeclarations before initializers
If an array redeclaration includes an initializer, the initializer
would previously be dropped on the floor.  Instead, directly apply the
initializer to the correct ir_variable instance and append the
generated instructions.

Fixes bugzilla #34374 and piglit tests glsl-{vs,fs}-array-redeclaration.

NOTE: This is a candidate for stable release branches.  0292ffb8 and
8e6cb9fe are also necessary.
2011-03-04 16:33:31 -08:00
Ian Romanick
0292ffb85c glsl: Refactor AST-to-HIR code handling variable initializers 2011-03-04 16:32:37 -08:00
Ian Romanick
8e6cb9fe51 glsl: Refactor AST-to-HIR code handling variable redeclarations 2011-03-04 16:32:37 -08:00
José Fonseca
c8e904e159 scons: Unbreak mingw cross compilation. 2011-03-04 14:44:39 +00:00
José Fonseca
5378983417 scons: Get glsl2 and glcpp programs building correctly. 2011-03-04 13:11:49 +00:00
José Fonseca
12d17bcadf glsl/glcpp: Use stdio.h instead of unistd.h. 2011-03-04 12:53:14 +00:00
José Fonseca
f52660c3dc glsl: Define YY_NO_UNISTD_H on MSVC. 2011-03-04 12:49:55 +00:00
Kenneth Graunke
09e1bebc25 glcpp: Remove trailing contexts from #if rules.
These are now unnecessary.
2011-03-03 10:42:37 -08:00
Kenneth Graunke
f20656e944 glcpp: Rework lexer to use a SKIP state rather than REJECT.
Previously, the rule deleted by this commit was matched every single
time (being the longest match).  If not skipping, it used REJECT to
continue on to the actual correct rule.

The flex manual advises against using REJECT where possible, as it is
one of the most expensive lexer features.  So using it on every match
seems undesirable. Perhaps more importantly, it made it necessary for
the #if directive rules to contain a look-ahead pattern to make them
as long as the (now deleted) "skip the whole line" rule.

This patch introduces an exclusive start state, SKIP, to avoid REJECTs.
Each time the lexer is called, the code at the top of the rules section
will run, implicitly switching the state to the correct one.

Fixes piglit tests 16384-consecutive-chars.frag and
16385-consecutive-chars.frag.
2011-03-03 10:42:37 -08:00
Kenneth Graunke
b56f30c2b2 glcpp/tests: Update 063-comments.c.expected to match output.
The expected result has been out of sync with what glcpp produces for
some time; glcpp's actual result seems to be correct and is very close to
GCC's cpp.  Updating this will make it easier to catch regressions in
upcoming commits.
2011-03-03 10:42:37 -08:00
José Fonseca
5d0e8beaa2 scons: More tweaks to fix MinGW build. 2011-03-03 16:57:38 +00:00
José Fonseca
dbfbb8cf6d scons: Ensure generated headers are in the include path. 2011-03-03 15:43:18 +00:00
Kenneth Graunke
2e756f3d6f glsl: Remove unused glcpp/Makefile.am.
This is a remnant of when glsl2 lived in its own repository.
2011-03-02 15:25:49 -08:00
Kenneth Graunke
8be828c3b3 glsl: Remove 'tests' subfolder.
These have long since moved to piglit and aren't useful to have here.
2011-03-02 15:25:49 -08:00
Kenneth Graunke
8be58df67a scons: Use Flex and Bison to generate lexer/parser files.
This gets it building again here; I'll leave it up to the SCons
maintainers to make further improvements.
2011-03-01 15:49:29 -08:00
Kenneth Graunke
80ec97af79 glsl: Rename .lpp to .ll and .ypp to .yy.
SCons has built-in support for .ll and .yy, but not .lpp and .ypp. Since
there's no real benefit to using the old names, change them.
2011-03-01 15:49:29 -08:00
Ian Romanick
6dd0a2ed40 Add generated parser / lexer files to gitignore lists 2011-03-01 13:43:12 -08:00
Ian Romanick
cb48207e4b glcpp: Remove files generated by flex and bison from GIT 2011-03-01 13:43:12 -08:00
Ian Romanick
8864b38783 glsl: Remove files generated by flex and bison from GIT 2011-03-01 13:43:12 -08:00
Kenneth Graunke
0a163cf56d glsl: Enable GL_OES_texture_3D extension for ES2. 2011-02-28 10:35:57 -08:00
Kenneth Graunke
eb639349e2 glsl: Use reralloc instead of plain realloc.
Plugs a memory leak when compiling shaders with user defined structures.

NOTE: This is a candidate for the 7.9 and 7.10 branches.
2011-02-28 10:35:40 -08:00