History log of /external/mesa3d/src/glsl/glsl_parser_extras.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d5c918f6adb2f7f72a759607c8f76e7616656c13 16-Jul-2012 Tomeu Vizoso <tomeu@tomeuvizoso.net> glsl: Add support for OES_standard_derivatives in GLSL ES.

Previously, we advertised the extension but the builtin functions
were enabled only for GLSL and not for ES.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52003

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
551bdf25bc4e57bea51c54da7e31c44c507e6c9f 22-Jun-2012 Eric Anholt <eric@anholt.net> glsl: Add support for default layout qualifiers for uniforms.

I ended up having to add rallocing of the ast_type_qualifier in order
to avoid pulling in ast.h for glsl_parser_extras.h, because I wanted
to track an ast_type_qualifier in the state.

Fixes piglit ARB_uniform_buffer_object/row-major.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
3a90dc22d1c74e8719c95221f15043e7f3e69286 31-Jul-2012 Kenneth Graunke <kenneth@whitecape.org> glsl: Refactor #version validation to be more future-proof.

The previous implementation required a flag in _mesa_glsl_parse_state
and line of code to initialize it for every version of the shading
language we intend to support. As we look to add 150, 330, 400, 410,
420, and beyond, this gets rather unwieldy.

This patch retains the switch statement (to reject, say, #version 111),
but removes all the bits. Code to check for ctx->API == API_OPENGL_CORE
could easily be added to the 110 and 120 cases to reject those.

v2: Use _mesa_is_desktop_gl to preserve the existing behavior in the
presence of the new API_OPENGL_CORE enumeration.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net> [v1]
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
4aecd8f0316833348bb6fc392eb1aeea2410a206 24-Jul-2012 Jordan Justen <jordan.l.justen@intel.com> glsl: add support for using API_OPENGL_CORE

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
f7561e8ecd80e915150ca63c0c79a5f9839c8e12 27-Apr-2012 Eric Anholt <eric@anholt.net> glsl: Turn UBO variable declarations into ir_variables and check qualifiers.

Fixes piglit layout-*-non-uniform and layout-*-within-block.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
912a429bc529a017a426f06631b31da1c0eaa3ae 26-Apr-2012 Eric Anholt <eric@anholt.net> glsl: Don't hide the type of struct_declaration_list.

I've been trying to derive from this for UBO support, and the slightly
obfuscated types were putting me over the edge.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
7fabb2b5939c8640075136fec15d6b87bad9c9dd 25-Dec-2011 Vincent Lejeune <vljn@ovi.com> glsl: Parser handles "#extension GL_ARB_uniform_buffer_object"

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
199771bc325900eb1d3acc7fa03808894a94fdb2 30-Apr-2012 Olivier Galibert <galibert@pobox.com> glsl: Scaffolding for ARB_shader_bit_encoding.

That adds support for activating the extension. It doesn't actually
*do* anything yet, of course.

Signed-off-by: Olivier Galibert <galibert@pobox.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
e21b9f1f19d2345026a7fbe095a776d0b64557ec 04-May-2012 Eric Anholt <eric@anholt.net> glsl: Remove the opt_discard_simplification pass.

This conflicts with the GLSL 1.30+ rules for derivatives after a
discard has occurred.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
d5a10dba6464d6cc40b3abcd6b704fb087e1056c 02-Apr-2012 Dylan Noblesmith <nobled@dreamwidth.org> glsl: report errors via GL_ARB_debug_output

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
8c99906cf5c8825ada0699f61926864e568ca69a 02-Apr-2012 Dylan Noblesmith <nobled@dreamwidth.org> glsl: add gl_context member

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
48e8a010aebbb40c75698e2aa8854d129c89f359 02-Apr-2012 Dylan Noblesmith <nobled@dreamwidth.org> glsl: consolidate error/warning code

And lay the groundwork for GL_ARB_debug_output.

v2: Add descriptive comments.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
60177d5e2aec07ed6386a6935b118a356d58c4ec 03-Oct-2010 Eric Anholt <eric@anholt.net> glsl: Add an array splitting pass.

I've had this code laying around almost done for a long time. The
idea is like opt_structure_splitting, that we've got a bunch of
transforms at the GLSL IR level that only understand scalars and
vectors, which just skip complicated dereferences. While driver
backends may manage some optimization after they split matrices up
themselves, it would be better to bring all of our optimization to
bear on the problem.

While I wasn't expecting changes quite yet, a few programs end up
winning: a gstreamer convolution shader, and the Humus dynamic
branching demo:
Total instructions: 269430 -> 269342
3/2148 programs affected (0.1%)
1498 -> 1410 instructions in affected programs (5.9% reduction)
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
b2c0df2b60a77b043d461f265c85d8b5b066a008 30-Mar-2012 Kenneth Graunke <kenneth@whitecape.org> glsl: Use (const char *) in AST nodes rather than plain (char *).

Nothing actually relied on them being mutable, and there was at least
one cast which discarded const qualifiers. The next patch would have
introduced many more.

Casting away const qualifiers should be avoided if at all possible.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
ac5a5b324335195b5a5ed98775ce442c573e7e1d 08-Mar-2012 Eric Anholt <eric@anholt.net> glsl: Add support for parsing #version 140.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
22d81f154fed9e004cca91807808ae3b81b01ced 28-Jan-2012 Eric Anholt <eric@anholt.net> glsl: Save and restore the whole switch state for nesting.

This stuffs them all in a struct for sanity. Fixes piglit
glsl-1.30/execution/switch/fs-uniform-nested.

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
b9e27cc1426e3242a003fa5ae91fab330694009a 18-Jan-2012 Eric Anholt <eric@anholt.net> mesa: Add a flag for forcing all GLSL extensions to "warn".

NOTE: This is a candidate for the 8.0 branch.
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
fa0a9ac5cdf49865cfc289c4326c73c9dd4a61c5 23-Dec-2011 Ian Romanick <ian.d.romanick@intel.com> glsl: Track descriptions of some expressions that can't be l-values

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
a92ee4abfe5c0bdd9cc921dee5f18436f1df8a4d 19-Nov-2011 Marek Olšák <maraeo@gmail.com> glsl: convervative_depth is not allowed in the vertex shader

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
bbcb648bc2f45dd85e33c7301527c8f6d97cbce6 19-Nov-2011 Marek Olšák <maraeo@gmail.com> mesa: rename the AMD_conservative_depth extension flag to ARB

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
5c02e2e2de75b9d18ca25b4f1cba38c4a89c5bd0 08-Nov-2011 Dan McCabe <zen3d.linux@gmail.com> glsl: Generate IR for switch statements

Up until now modifying the GLSL compiler has been pretty straightforward.
This is where things get interesting. But still pretty straightforward.

Switch statements can be thought of a series of if/then/else statements.
Case labels are compared with the value of a test expression and the case
statements are executed if the comparison is true.

There are a couple of aspects of switch statements that complicate this simple
view of the world. The primary one is that cases can fall through sequentially
to subsequent case, unless a break statement is encountered, in which case,
the switch statement exits completely.

But break handling is further complicated by the fact that a break statement
can impact the exit of a loop. Thus, we need to coordinate break processing
between switch statements and loop statements.

The code generated by a switch statement maintains three temporary state
variables:
int test_value;
bool is_fallthru;
bool is_break;

test_value is initialized to the value of the test expression at the head of
the switch statement. This is the value that case labels are compared against.

is_fallthru is used to sequentially fall through to subsequent cases and is
initialized to false. When a case label matches the test expression, this
state variable is set to true. It will also be forced to false if a break
statement has been encountered. This forcing to false on break MUST be
after every case test. In practice, we defer that forcing to immediately after
the last case comparison prior to executing a case statement, but that is
an optimization.

is_break is used to indicate that a break statement has been executed and is
initialized to false. When a break statement is encountered, it is set to true.
This state variable is then used to conditionally force is_fallthru to to false
to prevent subsequent case statements from executing.

Code generation for break statements depends on whether the break statement is
inside a switch statement or inside a loop statement. If it inside a loop
statement is inside a break statement, the same code as before gets generated.
But if a switch statement is inside a loop statement, code is emitted to set
the is_break state to true.

Just as ASTs for loop statements are managed in a stack-like
manner to handle nesting, we also add a bool to capture the innermost switch
or loop condition. Note that we still need to maintain a loop AST stack to
properly handle for-loop code generation on a continue statement. Technically,
we don't (yet) need a switch AST stack, but I am using one for orthogonality
with loop statements, in anticipation of future use. Note that a simple
boolean stack would have sufficed.

We will illustrate a switch statement with its analogous conditional code that
a switch statement corresponds to by examining an example.

Consider the following switch statement:
switch (42) {
case 0:
case 1:
gl_FragColor = vec4(1.0, 2.0, 3.0, 4.0);
case 2:
case 3:
gl_FragColor = vec4(4.0, 3.0, 2.0, 1.0);
break;
case 4:
default:
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
}

Note that case 0 and case 1 fall through to cases 2 and 3 if they occur.

Note that case 4 and the default case must be reached explicitly, since cases
2 and 3 break at the end of their case.

Finally, note that case 4 and the default case don't break but simply fall
through to the end of the switch.

For this code, the equivalent code can be expressed as:
int test_val = 42; // capture value of test expression
bool is_fallthru = false; // prevent initial fall through
bool is_break = false; // capture the execution of a break stmt

is_fallthru |= (test_val == 0); // enable fallthru on case 0
is_fallthru |= (test_val == 1); // enable fallthru on case 1
is_fallthru &= !is_break; // inhibit fallthru on previous break
if (is_fallthru) {
gl_FragColor = vec4(1.0, 2.0, 3.0, 4.0);
}

is_fallthru |= (test_val == 2); // enable fallthru on case 2
is_fallthru |= (test_val == 3); // enable fallthru on case 3
is_fallthru &= !is_break; // inhibit fallthru on previous break
if (is_fallthru) {
gl_FragColor = vec4(4.0, 3.0, 2.0, 1.0);
is_break = true; // inhibit all subsequent fallthru for break
}

is_fallthru |= (test_val == 4); // enable fallthru on case 4
is_fallthru = true; // enable fallthru for default case
is_fallthru &= !is_break; // inhibit fallthru on previous break
if (is_fallthru) {
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
}

The code generate for |= and &= uses the conditional assignment capabilities
of the IR.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
85beb39e14556cf02f58116fd287120cd1defbd5 08-Nov-2011 Dan McCabe <zen3d.linux@gmail.com> glsl: Reference data structure ctors in grammar

We now tie the grammar to the ctors of the ASTs they reference.

This requires that we actually have definitions of the ctors.

In addition, we also need to define "print" and "hir" methods for the AST
classes. The Print methods are pretty simple to flesh out. However, at this
stage of the development, we simply stub out the "hir" methods and flesh
them out later.

Also, since actual class instances get returned by the productions in the
grammar, we also need to designate the type of the productions that
reference those instances.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
2903816aadb281716b6c59a5a48aeadb84a08f50 23-Oct-2011 Chia-I Wu <olv@lunarg.com> glsl: add support for GL_OES_EGL_image_external

This extension introduces a new sampler type: samplerExternalOES.
texture2D (and texture2DProj) can be used to do a texture look up in an
external texture.

Reviewed-by: Brian Paul <brianp@vmware.com>
Acked-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
1d5d67f8adac9f94715de9804adb536d9a7ec5ee 21-Oct-2011 Ian Romanick <ian.d.romanick@intel.com> glsl: Add uniform_locations_assigned parameter to do_dead_code opt pass

Setting this flag prevents declarations of uniforms from being removed
from the IR. Since the IR is directly used by several API functions
that query uniforms in shaders, uniform declarations cannot be removed
after the locations have been set. However, it should still be safe
to reorder the declarations (this is not tested).

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41980
Tested-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Bryan Cain <bryancain3@gmail.com>
Cc: Vinson Lee <vlee@vmware.com>
Cc: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
0fabf8e8dc96a0eb8a9fbbac760d4faceee3af48 20-Sep-2011 Kenneth Graunke <kenneth@whitecape.org> glsl: Defer initialization of built-in functions until they're needed.

Very simple shaders don't actually use GLSL built-ins. For example:
- gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
- gl_FragColor = vec4(0.0);
Both of the shaders used by _mesa_meta_glsl_Clear() also qualify.

By waiting to initialize the built-ins until the first time we need to
look for a signature, we can avoid the overhead entirely in these cases.

Makes piglit run roughly 18% faster (255 vs. 312 seconds).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
60df737ad57c20701b66d7cd3f63d1dc75745986 07-Sep-2011 Eric Anholt <eric@anholt.net> glsl: Don't do structure splitting until link time.

We were splitting on each side of an unlinked program, and the two
sides lost track of which variables they referenced, resulting in
assertion failure during validation. Fixes piglit
link-struct-uniform-usage.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
b9eb4d8a59699e233255113acafae220c3d8fe3c 09-Aug-2011 Kenneth Graunke <kenneth@whitecape.org> glsl: Implement the GL_ARB_conservative_depth extension.

It's the same as GL_AMD_conservative_depth. The specs have slight
differences in wording, but don't differ in content or behavior.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
3097715d41da4b725b7ce9f9d5bbc0f684cbf0a6 25-Jun-2011 Paul Berry <stereotype441@gmail.com> glsl: Rewrote _mesa_glsl_process_extension to use table-driven logic.

Instead of using a chain of manually maintained if/else blocks to
handle "#extension" directives, we now consult a table that specifies,
for each extension, the circumstances under which it is available, and
what flags in _mesa_glsl_parse_state need to be set in order to
activate it.

This makes it easier to add new GLSL extensions in the future, and
fixes the following bugs:

- Previously, _mesa_glsl_process_extension would sometimes set the
"_enable" and "_warn" flags for an extension before checking whether
the extension was supported by the driver; as a result, specifying
"enable" behavior for an unsupported extension would sometimes cause
front-end support for that extension to be switched on in spite of
the fact that back-end support was not available, leading to strange
failures, such as those in
https://bugs.freedesktop.org/show_bug.cgi?id=38015.

- "#extension all: warn" and "#extension all: disable" had no effect.

Notes:

- All extensions are currently marked as unavailable in geometry
shaders. This should not have any adverse effects since geometry
shaders aren't supported yet. When we return to working on geometry
shader support, we'll need to update the table for those extensions
that are available in geometry shaders.

- Previous to this commit, if a shader mentioned
ARB_shader_texture_lod, extension ARB_texture_rectangle would be
automatically turned on in order to ensure that the types
sampler2DRect and sampler2DRectShadow would be defined. This was
unnecessary, because (a) ARB_shader_texture_lod works perfectly well
without those types provided that the builtin functions that
reference them are not called, and (b) ARB_texture_rectangle is
enabled by default in non-ES contexts anyway. I eliminated this
unnecessary behavior in order to make the behavior of all extensions
consistent.

NOTE: This is a candidate for the 7.10 and 7.11 branches.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
26b566e19cbfa189a6a158718f21859c0b7ed090 03-Jun-2011 Paul Berry <stereotype441@gmail.com> AST dump: fixed printing of conditionals.

ast_expression::print() had an incorrect index into the subexpressions
array, so (a ? b : c) was being incorrectly rendered as (a ? b : b).

Signed-off-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
5a3a242a8fc4b9f0cac0e40786dd0c4831517473 19-Oct-2010 Kenneth Graunke <kenneth@whitecape.org> glsl: Add compiler support for ARB_shader_texture_lod.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
5ba2e7adf01aaa855e36a577a47de8f4ddace99c 02-May-2011 Marek Olšák <maraeo@gmail.com> mesa: implement AMD_shader_stencil_export

It's just an alias of the ARB variant with some GLSL compiler changes.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
6a35cbb656e0f8a2479a63eadefb1ab85f42d490 03-Apr-2011 Eric Anholt <eric@anholt.net> glsl/opt_cpe: Reenable opt_copy_propagation_elements.cpp pass.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
03eade164d45cc35422dfc03aeaf579c9c3183f9 08-Apr-2011 Ian Romanick <ian.d.romanick@intel.com> glsl: Make GL_ARB_shader_stencil_export enable block be similar to other blocks

Tested-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
f2bda1b5664cd8a8744798926f2562212229d938 08-Apr-2011 Ian Romanick <ian.d.romanick@intel.com> glsl: Only let a shader enable GL_ARB_draw_instanced if the driver supports it

Also make the GL_ARB_draw_instanced block follow the same pattern as
the other blocks.

Tested-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
0a163cf56d1e412629cb802480998a982a47bb3c 26-Feb-2011 Kenneth Graunke <kenneth@whitecape.org> glsl: Enable GL_OES_texture_3D extension for ES2.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
60aab5f335537e5b6788132e2563865243483750 08-Feb-2011 Eric Anholt <eric@anholt.net> glsl: Disable the new copy propagation pass until it gets fixed.

It apparently regressed a bunch of ES2 cases.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
e31266ed3e3667c043bc5ad1abd65cfdb0fa7fdb 25-Jan-2011 Eric Anholt <eric@anholt.net> glsl: Add a new opt_copy_propagation variant that does it channel-wise.

This patch cleans up many of the extra copies in GLSL IR introduced by
i965's scalarizing passes. It doesn't result in a statistically
significant performance difference on nexuiz high settings (n=3) or my
demo (n=10), due to brw_fs.cpp's register coalescing covering most of
those extra moves anyway. However, it does make the debug of wine's
GLSL shaders much more tractable, and reduces instruction count of
glsl-fs-convolution-2 from 376 to 288.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
a7d350790b4d0416117bc785aa77de52e9298a01 01-Feb-2011 Kenneth Graunke <kenneth@whitecape.org> glsl: Fix memory error when creating the supported version string.

Passing ralloc_vasprintf_append a 0-byte allocation doesn't work. If
passed a non-NULL argument, ralloc calls strlen to find the end of the
string. Since there's no terminating '\0', it runs off the end.

Fixes a crash introduced in 14880a510a1a288df0778395097d5a52806abfb0.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
14880a510a1a288df0778395097d5a52806abfb0 01-Feb-2011 Ian Romanick <ian.d.romanick@intel.com> glsl: Reject shader versions not supported by the implementation

Previously we'd happily compile GLSL 1.30 shaders on any driver. We'd
also happily compile GLSL 1.10 and 1.20 shaders in an ES2 context.
This has been a long standing FINISHME in the compiler.

NOTE: This is a candidate for the 7.9 and 7.10 branches
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
d3073f58c17d8675a2ecdd5dfa83e5520c78e1a8 21-Jan-2011 Kenneth Graunke <kenneth@whitecape.org> Convert everything from the talloc API to the ralloc API.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
8ba260e09910d6906fba17a78eee6d1b0cf8069d 27-Jan-2011 Chad Versace <chad.versace@intel.com> glsl: Enable AMD_conservative_depth in parser

All the necessary compiler infrastructure for AMD_conservative_depth is in
place, so it's safe to enable it in the parser.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
58c988ada56114b56477983f66b4039219f1a82c 18-Jan-2011 Eric Anholt <eric@anholt.net> glsl: Skip the rest of loop unrolling if no loops were found.

Shaves 1.6% (+/- 1.0%) off of ff_fragment_shader glean texCombine time
(n=5).
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
652901e95b4ed406293d0e1fabee857c054119b1 15-Jan-2011 Brian Paul <brianp@vmware.com> Merge branch 'draw-instanced'

Conflicts:
src/gallium/auxiliary/draw/draw_llvm.c
src/gallium/drivers/llvmpipe/lp_state_fs.c
src/glsl/ir_set_program_inouts.cpp
src/mesa/tnl/t_vb_program.c
7ce186358e881d1e30eda716a8dea73d2dab2ee9 09-Dec-2010 Brian Paul <brianp@vmware.com> glsl: add support for system values and GL_ARB_draw_instanced
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
9a1d063c6d679c2155f5eb80f1cb94368d36bf2c 25-Nov-2010 Kenneth Graunke <kenneth@whitecape.org> glsl: Add an optimization pass to simplify discards.

NOTE: This is a candidate for the 7.9 branch.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
63684a9ae7a66f68df1f2c68cd9358e5622122a3 19-Nov-2010 Kenneth Graunke <kenneth@whitecape.org> glsl: Combine many instruction lowering passes into one.

This should save on the overhead of tree-walking and provide a
convenient place to add more instruction lowering in the future.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
a75da2c0e85eb6b8279ec895c3f74cc4aefc0257 20-Oct-2010 Kenneth Graunke <kenneth@whitecape.org> glsl: Remove useless ir_shader enumeration value.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
f9995b30756140724f41daf963fa06167912be7f 12-Oct-2010 Kristian Høgsberg <krh@bitplanet.net> Drop GLcontext typedef and use struct gl_context instead
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
d9671863eaae41ba28b6fe82e3e7d1dac12f514c 06-Oct-2010 Dave Airlie <airlied@redhat.com> glsl: add support for shader stencil export

This adds proper support for the GL_ARB_shader_stencil_export extension
to the GLSL compiler. Thanks to Ian for pointing out where I need to add things.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
7f68cbdc4d9f602dc2619ac4a90283a4f057a8cb 06-Oct-2010 Ian Romanick <ian.d.romanick@intel.com> glsl: Add parser support for GL_ARB_explicit_attrib_location layouts

Only layout(location=#) is supported. Setting the index requires GLSL
1.30 and GL_ARB_blend_func_extended.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
e24d35a5b59ca1e75b69a32db6294787378a963f 06-Oct-2010 Ian Romanick <ian.d.romanick@intel.com> glsl: Wrap ast_type_qualifier contents in a struct in a union

This will ease adding non-bit fields in the near future.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
ca92ae2699c4aad21c0811b9a5562b9223816caf 18-Sep-2010 Kenneth Graunke <kenneth@whitecape.org> glsl: Properly handle nested structure types.

Fixes piglit test CorrectFull.frag.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
8f2214f4892acb994d13531d555196bd8f242dad 13-Sep-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Add pass to remove redundant jumps
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
3361cbac2a883818efeb2b3e27405eeefce60f63 07-Sep-2010 Luca Barbieri <luca@luca-barbieri.com> glsl: add continue/break/return unification/elimination pass (v2)

Changes in v2:
- Base class renamed to ir_control_flow_visitor
- Tried to comply with coding style

This is a new pass that supersedes ir_if_return and "lowers" jumps
to if/else structures.

Currently it causes no regressions on softpipe and nv40, but I'm not sure
whether the piglit glsl tests are thorough enough, so consider this
experimental.

It can be asked to:
1. Pull jumps out of ifs where possible
2. Remove all "continue"s, replacing them with an "execute flag"
3. Replace all "break" with a single conditional one at the end of the loop
4. Replace all "return"s with a single return at the end of the function,
for the main function and/or other functions

This gives several great benefits:
1. All functions can be inlined after this pass
2. nv40 and other pre-DX10 chips without "continue" can be supported
3. nv30 and other pre-DX10 chips with no control flow at all are better supported

Note that for full effect we should also teach the unroller to unroll
loops with a fixed maximum number of iterations but with the canonical
conditional "break" that this pass will insert if asked to.

Continues are lowered by adding a per-loop "execute flag", initialized to
TRUE, that when cleared inhibits all execution until the end of the loop.

Breaks are lowered to continues, plus setting a "break flag" that is checked
at the end of the loop, and trigger the unique "break".

Returns are lowered to breaks/continues, plus adding a "return flag" that
causes loops to break again out of their enclosing loops until all the
loops are exited: then the "execute flag" logic will ignore everything
until the end of the function.

Note that "continue" and "return" can also be implemented by adding
a dummy loop and using break.
However, this is bad for hardware with limited nesting depth, and
prevents further optimization, and thus is not currently performed.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
e591c4625cae63660c5000fbab366e40fe154ab0 05-Sep-2010 Luca Barbieri <luca@luca-barbieri.com> glsl: add several EmitNo* options, and MaxUnrollIterations

This increases the chance that GLSL programs will actually work.

Note that continues and returns are not yet lowered, so linking
will just fail if not supported.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
dc754586ca84741b4df5b72fd235c4134816854c 08-Sep-2010 Chia-I Wu <olv@lunarg.com> glsl: Require a context in _mesa_glsl_parse_state.

Create a dummy context in the standalone compiler and pass it to
_mesa_glsl_parse_state.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
719caa403ecc3345b86708f8172600d80132d6cb 16-Aug-2010 Kenneth Graunke <kenneth@whitecape.org> glsl: Accept language version 100 and make it the default on ES2.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
814c89abdbcd5b841b98746af921796df0362238 05-Sep-2010 Kenneth Graunke <kenneth@whitecape.org> glsl: Set default language version in mesa_glsl_parse_state constructor.

This should make it easier to change the default version based on the
API (say, version 1.00 for OpenGL ES).

Also, synchronize the symbol table's version with the parse state's
version just before doing AST-to-HIR. This way, it will be set when
it matters, but the main initialization code doesn't have to care about
the symbol table.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
de7c3fe31a7b88a5392dceee3b13b45ed78cdeae 27-Aug-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Add module to perform simple loop unrolling
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
8df2dbf91ddfd0c1590e33015e85470b67e69319 27-Aug-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Perform initial bits of loop analysis during compilation
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
bfd7c9ac228c7ed8aec04c3b3aa33f40ee00b035 23-Aug-2010 Chia-I Wu <olv@lunarg.com> glsl: Include main/core.h.

Make glsl include only main/core.h from core mesa.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
b83846475bac76268d75f53632faf8aad8cad02c 19-Aug-2010 Eric Anholt <eric@anholt.net> 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().
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
8f8cdbfba43550d0b8985fb087961864e4cd92b6 13-Aug-2010 Eric Anholt <eric@anholt.net> glsl2: Add a pass to strip out noop swizzles.

With the glsl2-965 branch, the optimization of glsl-algebraic-rcp-rcp
regressed due to noop swizzles hiding information from ir_algebraic.
This cleans up those noop swizzles for us.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
2f4fe151681a6f6afe1d452eece6cf4144f44e49 10-Aug-2010 Eric Anholt <eric@anholt.net> glsl2: Move the common optimization passes to a helper function.

These are passes that we expect all codegen to be happy with. The
other lowering passes for Mesa IR are moved to the Mesa IR generator.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
4f397e1d641bf265b395f7dec062dab451fb5a54 06-Aug-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Enable all supported extensions in stand-alone compiler
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
ec9675ec533cc0c0c7b1c738280e9b9adf2591fb 30-Jul-2010 Carl Worth <cworth@cworth.org> ast: Initialize location data in constructor of all ast_node objects.

This prevents using uninitialized data in _msea_glsl_error in some
cases, (including at least 6 piglit tests). Thanks to valgrind for
pointing out the problem!
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
f50f06552eb1e4af27d6fe99c381eac6a0a4ea0f 01-Jul-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Parser support for GL_ARB_fragment_coord_conventions
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
aa9f86ae8b3bb2172092ff9b50751677c509e6b4 23-Jul-2010 Kenneth Graunke <kenneth@whitecape.org> glsl2: Fix standalone compiler to not crash horribly.

ir_to_mesa was updated for the _mesa_glsl_parse_state constructor
changes, but main.cpp was not.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
2462a536ea5c98867296905e3da127eba7c7bdff 19-Jul-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Add a constructor for _mesa_glsl_parse_state

Coming changes to the handling of built-in functions necessitate this.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
87a2ee8db6222006480bd0e0ac58b77795c5d951 19-Jul-2010 Eric Anholt <eric@anholt.net> glsl2: Fix warning from always-false assert not being known to not return.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
667f4e1940c4c4660e35dc9906672a476369660f 01-Jul-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Conditionally allow optional extensions to be enabled

The only optional extension currently supported by the compiler is
GL_EXT_texture_array.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
3832706f81d7f5310882eda6d7ef0c3e39593b18 02-Jul-2010 Ian Romanick <ian.d.romanick@intel.com> glsl2: Initialize ast_declarator_list::invariant in constructor
/external/mesa3d/src/glsl/glsl_parser_extras.cpp
29285882676388aacff123e8bdf025904abf8ea9 25-Jun-2010 Eric Anholt <eric@anholt.net> glsl2: Move the compiler to the subdirectory it will live in in Mesa.
/external/mesa3d/src/glsl/glsl_parser_extras.cpp