On Tue, 13 Jul 2010 16:46:21 -0700, "Segovia, Benjamin" 
<benjamin.sego...@intel.com> wrote:
> To be more precise,
> - The shader compiler present in src/mesa/slang is used.
> 
> - The glsl shader (randomly taken on the net) is:
> void main(){
>   const float PI = 3.14159265358979323846264;
>   const float angle = 45.0;
>   const float rad_angle = angle*PI/180.0;

This will definitely get constant folded by the new compiler.

>   vec4 a = gl_Vertex;
>   vec4 b = a;

gratuitous moved channels here should get removed by Mesa IR
optimization I think.

>   b.x = a.x*cos(rad_angle) - a.y*sin(rad_angle);
>   b.y = a.y*cos(rad_angle) + a.x*sin(rad_angle);

Not today, but in the next week or two (Ken's working on it), the
builtin function calls of constant values will get folded by the new
compiler.  Also on my todo list is recognizing things like this "b.y =
dot(a.yx, vec2(const, const))".

As you noted in other replies, a bunch of things are not obvious to
optimize in Mesa IR when the target is the 965 fragment shader.  Our
plan is to eventually build a native glsl2 IR -> 965 FS codegen, but in
the short term one of my plans is to put a pass in for 965 fragment
shaders that flattens expressions and hacks them up into their component
channels (where appropriate -- not texture sampling), then split vector
variables referenced only channel-wise into multiple scalar variables.
Then the Mesa IR generated will have the optimizations we wanted already
done, and the 965 fragment shader code generated shouldn't look so bad
(though it'll still lack compute-to-MRF, as you noted).

Attachment: pgpZYzmuKf4sl.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to